Add custom event for settings being updated - 1.150
When we used navigation params to decide whether or not to update the SetList, we broke reacting to settings changes. This is because we used to update settings whenever the user navigated to the page.
This commit is contained in:
parent
bd9746bddb
commit
24fd687856
|
@ -5,7 +5,7 @@ import {
|
||||||
useRoute,
|
useRoute,
|
||||||
} from "@react-navigation/native";
|
} from "@react-navigation/native";
|
||||||
import { useCallback, useEffect, useMemo, useState } from "react";
|
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 { List } from "react-native-paper";
|
||||||
import { Like } from "typeorm";
|
import { Like } from "typeorm";
|
||||||
import { LIMIT } from "./constants";
|
import { LIMIT } from "./constants";
|
||||||
|
@ -16,7 +16,7 @@ import { HomePageParams } from "./home-page-params";
|
||||||
import ListMenu from "./ListMenu";
|
import ListMenu from "./ListMenu";
|
||||||
import Page from "./Page";
|
import Page from "./Page";
|
||||||
import SetItem from "./SetItem";
|
import SetItem from "./SetItem";
|
||||||
import Settings from "./settings";
|
import Settings, { SETTINGS } from "./settings";
|
||||||
|
|
||||||
export default function SetList() {
|
export default function SetList() {
|
||||||
const [refreshing, setRefreshing] = useState(false);
|
const [refreshing, setRefreshing] = useState(false);
|
||||||
|
@ -59,6 +59,10 @@ export default function SetList() {
|
||||||
value: "",
|
value: "",
|
||||||
skip: 0,
|
skip: 0,
|
||||||
});
|
});
|
||||||
|
const description = DeviceEventEmitter.addListener(SETTINGS, () => {
|
||||||
|
settingsRepo.findOne({ where: {} }).then(setSettings);
|
||||||
|
});
|
||||||
|
return description.remove;
|
||||||
/* eslint-disable react-hooks/exhaustive-deps */
|
/* eslint-disable react-hooks/exhaustive-deps */
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ import { darkOptions, lightOptions, themeOptions } from "./options";
|
||||||
import Page from "./Page";
|
import Page from "./Page";
|
||||||
import Select from "./Select";
|
import Select from "./Select";
|
||||||
import SettingButton from "./SettingButton";
|
import SettingButton from "./SettingButton";
|
||||||
import Settings from "./settings";
|
import Settings, { settingsUpdated } from "./settings";
|
||||||
import Switch from "./Switch";
|
import Switch from "./Switch";
|
||||||
import { toast } from "./toast";
|
import { toast } from "./toast";
|
||||||
import { useTheme } from "./use-theme";
|
import { useTheme } from "./use-theme";
|
||||||
|
@ -71,13 +71,14 @@ export default function SettingsPage() {
|
||||||
});
|
});
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const update = useCallback((key: keyof Settings, value: unknown) => {
|
const update = useCallback(async (key: keyof Settings, value: unknown) => {
|
||||||
return settingsRepo
|
await settingsRepo
|
||||||
.createQueryBuilder()
|
.createQueryBuilder()
|
||||||
.update()
|
.update()
|
||||||
.set({ [key]: value })
|
.set({ [key]: value })
|
||||||
.printSql()
|
.printSql()
|
||||||
.execute();
|
.execute();
|
||||||
|
settingsUpdated();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const soundString = useMemo(() => {
|
const soundString = useMemo(() => {
|
||||||
|
|
|
@ -85,8 +85,8 @@ android {
|
||||||
applicationId "com.massive"
|
applicationId "com.massive"
|
||||||
minSdkVersion rootProject.ext.minSdkVersion
|
minSdkVersion rootProject.ext.minSdkVersion
|
||||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||||
versionCode 36175
|
versionCode 36176
|
||||||
versionName "1.149"
|
versionName "1.150"
|
||||||
}
|
}
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
release {
|
release {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "massive",
|
"name": "massive",
|
||||||
"version": "1.149",
|
"version": "1.150",
|
||||||
"private": true,
|
"private": true,
|
||||||
"license": "GPL-3.0-only",
|
"license": "GPL-3.0-only",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import { Column, Entity, PrimaryColumn } from "typeorm";
|
import { Column, Entity, PrimaryColumn } from "typeorm";
|
||||||
|
import { DeviceEventEmitter } from "react-native";
|
||||||
|
|
||||||
@Entity()
|
@Entity()
|
||||||
export default class Settings {
|
export default class Settings {
|
||||||
|
@ -47,3 +48,9 @@ export default class Settings {
|
||||||
@Column("boolean")
|
@Column("boolean")
|
||||||
backup: boolean;
|
backup: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const SETTINGS = "settings";
|
||||||
|
|
||||||
|
export const settingsUpdated = () => {
|
||||||
|
DeviceEventEmitter.emit(SETTINGS);
|
||||||
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user