diff --git a/SetList.tsx b/SetList.tsx index d2c488c..ee0ab89 100644 --- a/SetList.tsx +++ b/SetList.tsx @@ -5,7 +5,7 @@ import { useRoute, } from "@react-navigation/native"; import { useCallback, useEffect, useMemo, useState } from "react"; -import { FlatList } from "react-native"; +import { DeviceEventEmitter, FlatList } from "react-native"; import { List } from "react-native-paper"; import { Like } from "typeorm"; import { LIMIT } from "./constants"; @@ -16,7 +16,7 @@ import { HomePageParams } from "./home-page-params"; import ListMenu from "./ListMenu"; import Page from "./Page"; import SetItem from "./SetItem"; -import Settings from "./settings"; +import Settings, { SETTINGS } from "./settings"; export default function SetList() { const [refreshing, setRefreshing] = useState(false); @@ -59,6 +59,10 @@ export default function SetList() { value: "", skip: 0, }); + const description = DeviceEventEmitter.addListener(SETTINGS, () => { + settingsRepo.findOne({ where: {} }).then(setSettings); + }); + return description.remove; /* eslint-disable react-hooks/exhaustive-deps */ }, []); diff --git a/SettingsPage.tsx b/SettingsPage.tsx index 678ccdb..0adfc38 100644 --- a/SettingsPage.tsx +++ b/SettingsPage.tsx @@ -16,7 +16,7 @@ import { darkOptions, lightOptions, themeOptions } from "./options"; import Page from "./Page"; import Select from "./Select"; import SettingButton from "./SettingButton"; -import Settings from "./settings"; +import Settings, { settingsUpdated } from "./settings"; import Switch from "./Switch"; import { toast } from "./toast"; import { useTheme } from "./use-theme"; @@ -71,13 +71,14 @@ export default function SettingsPage() { }); }, []); - const update = useCallback((key: keyof Settings, value: unknown) => { - return settingsRepo + const update = useCallback(async (key: keyof Settings, value: unknown) => { + await settingsRepo .createQueryBuilder() .update() .set({ [key]: value }) .printSql() .execute(); + settingsUpdated(); }, []); const soundString = useMemo(() => { diff --git a/android/app/build.gradle b/android/app/build.gradle index ccb5f40..03584c7 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -85,8 +85,8 @@ android { applicationId "com.massive" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 36175 - versionName "1.149" + versionCode 36176 + versionName "1.150" } signingConfigs { release { diff --git a/package.json b/package.json index 335b6c4..dd05414 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "massive", - "version": "1.149", + "version": "1.150", "private": true, "license": "GPL-3.0-only", "scripts": { diff --git a/settings.ts b/settings.ts index af72f50..2d2ab24 100644 --- a/settings.ts +++ b/settings.ts @@ -1,4 +1,5 @@ import { Column, Entity, PrimaryColumn } from "typeorm"; +import { DeviceEventEmitter } from "react-native"; @Entity() export default class Settings { @@ -47,3 +48,9 @@ export default class Settings { @Column("boolean") backup: boolean; } + +export const SETTINGS = "settings"; + +export const settingsUpdated = () => { + DeviceEventEmitter.emit(SETTINGS); +};