浏览代码

Merge pull request #288 from pawelmalak/feature

Version 2.2.1
pawelmalak 3 年之前
父节点
当前提交
750891cffa

+ 1 - 1
.env

@@ -1,5 +1,5 @@
 PORT=5005
 NODE_ENV=development
-VERSION=2.2.0
+VERSION=2.2.1
 PASSWORD=flame_password
 SECRET=e02eb43d69953658c6d07311d6313f2d4467672cb881f96b29368ba1f3f4da4b

+ 5 - 0
CHANGELOG.md

@@ -1,3 +1,8 @@
+### v2.2.1 (2022-01-08)
+- Local search will now include app descriptions ([#266](https://github.com/pawelmalak/flame/issues/266))
+- Fixed bug with unsupported characters in local search [#279](https://github.com/pawelmalak/flame/issues/279))
+- Background tasks optimization ([#283](https://github.com/pawelmalak/flame/issues/283))
+
 ### v2.2.0 (2021-12-17)
 - Added option to set custom description for apps ([#201](https://github.com/pawelmalak/flame/issues/201))
 - Fixed fatal error while deploying Flame to cluster ([#242](https://github.com/pawelmalak/flame/issues/242))

+ 1 - 1
client/.env

@@ -1 +1 @@
-REACT_APP_VERSION=2.2.0
+REACT_APP_VERSION=2.2.1

+ 4 - 2
client/src/components/Home/Home.tsx

@@ -64,8 +64,10 @@ export const Home = (): JSX.Element => {
     if (localSearch) {
       // Search through apps
       setAppSearchResult([
-        ...apps.filter(({ name }) =>
-          new RegExp(escapeRegex(localSearch), 'i').test(name)
+        ...apps.filter(({ name, description }) =>
+          new RegExp(escapeRegex(localSearch), 'i').test(
+            `${name} ${description}`
+          )
         ),
       ]);
 

+ 2 - 1
client/src/components/SearchBar/SearchBar.tsx

@@ -69,7 +69,8 @@ export const SearchBar = (props: Props): JSX.Element => {
     );
 
     if (isLocal) {
-      setLocalSearch(search);
+      // no additional encoding required for local search
+      setLocalSearch(inputRef.current.value);
     }
 
     if (e.code === 'Enter' || e.code === 'NumpadEnter') {

+ 43 - 29
client/src/components/Settings/AppDetails/AppDetails.tsx

@@ -1,43 +1,57 @@
 import { Fragment } from 'react';
+
+// UI
 import { Button, SettingsHeadline } from '../../UI';
+import { AuthForm } from './AuthForm/AuthForm';
 import classes from './AppDetails.module.css';
+
+// Store
+import { useSelector } from 'react-redux';
+import { State } from '../../../store/reducers';
+
+// Other
 import { checkVersion } from '../../../utility';
-import { AuthForm } from './AuthForm/AuthForm';
 
 export const AppDetails = (): JSX.Element => {
+  const { isAuthenticated } = useSelector((state: State) => state.auth);
+
   return (
     <Fragment>
       <SettingsHeadline text="Authentication" />
       <AuthForm />
 
-      <hr className={classes.separator} />
-
-      <div>
-        <SettingsHeadline text="App version" />
-        <p className={classes.text}>
-          <a
-            href="https://github.com/pawelmalak/flame"
-            target="_blank"
-            rel="noreferrer"
-          >
-            Flame
-          </a>{' '}
-          version {process.env.REACT_APP_VERSION}
-        </p>
-
-        <p className={classes.text}>
-          See changelog{' '}
-          <a
-            href="https://github.com/pawelmalak/flame/blob/master/CHANGELOG.md"
-            target="_blank"
-            rel="noreferrer"
-          >
-            here
-          </a>
-        </p>
-
-        <Button click={() => checkVersion(true)}>Check for updates</Button>
-      </div>
+      {isAuthenticated && (
+        <Fragment>
+          <hr className={classes.separator} />
+
+          <div>
+            <SettingsHeadline text="App version" />
+            <p className={classes.text}>
+              <a
+                href="https://github.com/pawelmalak/flame"
+                target="_blank"
+                rel="noreferrer"
+              >
+                Flame
+              </a>{' '}
+              version {process.env.REACT_APP_VERSION}
+            </p>
+
+            <p className={classes.text}>
+              See changelog{' '}
+              <a
+                href="https://github.com/pawelmalak/flame/blob/master/CHANGELOG.md"
+                target="_blank"
+                rel="noreferrer"
+              >
+                here
+              </a>
+            </p>
+
+            <Button click={() => checkVersion(true)}>Check for updates</Button>
+          </div>
+        </Fragment>
+      )}
     </Fragment>
   );
 };

+ 1 - 0
server.js

@@ -23,6 +23,7 @@ const logger = new Logger();
   await initApp();
   await connectDB();
   await associateModels();
+  await jobs();
 
   // Create server for Express API and WebSockets
   const server = http.createServer();

+ 26 - 22
utils/jobs.js

@@ -6,30 +6,34 @@ const Logger = require('./Logger');
 const loadConfig = require('./loadConfig');
 const logger = new Logger();
 
-// Update weather data every 15 minutes
-const weatherJob = schedule.scheduleJob(
-  'updateWeather',
-  '0 */15 * * * *',
-  async () => {
-    const { WEATHER_API_KEY: secret } = await loadConfig();
+module.exports = async function () {
+  const { WEATHER_API_KEY } = await loadConfig();
 
-    try {
-      const weatherData = await getExternalWeather();
+  if (WEATHER_API_KEY != '') {
+    // Update weather data every 15 minutes
+    const weatherJob = schedule.scheduleJob(
+      'updateWeather',
+      '0 */15 * * * *',
+      async () => {
+        try {
+          const weatherData = await getExternalWeather();
 
-      Sockets.getSocket('weather').socket.send(JSON.stringify(weatherData));
-    } catch (err) {
-      if (secret) {
-        logger.log(err.message, 'ERROR');
+          Sockets.getSocket('weather').socket.send(JSON.stringify(weatherData));
+        } catch (err) {
+          if (WEATHER_API_KEY) {
+            logger.log(err.message, 'ERROR');
+          }
+        }
       }
-    }
-  }
-);
+    );
 
-// Clear old weather data every 4 hours
-const weatherCleanerJob = schedule.scheduleJob(
-  'clearWeather',
-  '0 5 */4 * * *',
-  async () => {
-    clearWeatherData();
+    // Clear old weather data every 4 hours
+    const weatherCleanerJob = schedule.scheduleJob(
+      'clearWeather',
+      '0 5 */4 * * *',
+      async () => {
+        clearWeatherData();
+      }
+    );
   }
-);
+};