diff --git a/apps/mobile/app/screens/settings/picker/pickers.jsx b/apps/mobile/app/screens/settings/picker/pickers.tsx
similarity index 77%
rename from apps/mobile/app/screens/settings/picker/pickers.jsx
rename to apps/mobile/app/screens/settings/picker/pickers.tsx
index 8107ee1fa..ef70f1b99 100644
--- a/apps/mobile/app/screens/settings/picker/pickers.jsx
+++ b/apps/mobile/app/screens/settings/picker/pickers.tsx
@@ -17,14 +17,21 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-import { DATE_FORMATS, TIME_FORMATS } from "@notesnook/core";
-import { getFontById, getFonts } from "@notesnook/editor/dist/cjs/utils/font";
+import {
+ DATE_FORMATS,
+ DayFormat,
+ TIME_FORMATS,
+ TimeFormat,
+ TrashCleanupInterval,
+ WeekFormat
+} from "@notesnook/core";
+import { getFontById, getFonts } from "@notesnook/editor";
import dayjs from "dayjs";
import { createSettingsPicker } from ".";
import { db } from "../../../common/database";
import { ToastManager } from "../../../services/event-manager";
import SettingsService from "../../../services/settings";
-import { useSettingStore } from "../../../stores/use-setting-store";
+import { Settings, useSettingStore } from "../../../stores/use-setting-store";
import { useUserStore } from "../../../stores/use-user-store";
import { MenuItemsList } from "../../../utils/menu-items";
import { verifyUserWithApplock } from "../functions";
@@ -44,26 +51,29 @@ const WeekFormatNames = {
Mon: "Monday"
};
-export const FontPicker = createSettingsPicker({
+export const FontPicker = createSettingsPicker<
+ ReturnType[0],
+ Settings["defaultFontFamily"]
+>({
getValue: () => useSettingStore.getState().settings.defaultFontFamily,
- updateValue: (item) => {
+ updateValue: async (item) => {
SettingsService.set({
defaultFontFamily: item.id
});
},
formatValue: (item) => {
- return getFontById(typeof item === "object" ? item.id : item).title;
+ return getFontById(typeof item === "object" ? item.id : item)?.title;
},
getItemKey: (item) => item.id,
options: getFonts(),
compareValue: (current, item) => current === item.id,
- isFeatureAvailable: () => true,
- isOptionAvailable: () => true
+ isFeatureAvailable: async () => true,
+ isOptionAvailable: async () => true
});
export const HomePicker = createSettingsPicker({
getValue: () => useSettingStore.getState().settings.homepage,
- updateValue: (item) => {
+ updateValue: async (item) => {
SettingsService.set({ homepage: item.title });
ToastManager.show({
heading: strings.homePageChangedTo(item.title),
@@ -72,18 +82,22 @@ export const HomePicker = createSettingsPicker({
});
},
formatValue: (item) => {
- return strings.routes[typeof item === "object" ? item.title : item]?.();
+ return strings.routes[
+ (typeof item === "object"
+ ? item.title
+ : item) as keyof typeof strings.routes
+ ]?.();
},
getItemKey: (item) => item.title,
options: MenuItemsList.slice(0, MenuItemsList.length - 1),
compareValue: (current, item) => current === item.title,
- isFeatureAvailable: () => true,
- isOptionAvailable: () => true
+ isFeatureAvailable: async () => true,
+ isOptionAvailable: async () => true
});
export const SidebarTabPicker = createSettingsPicker({
getValue: () => useSettingStore.getState().settings.defaultSidebarTab,
- updateValue: (item) => {
+ updateValue: async (item) => {
SettingsService.set({ defaultSidebarTab: item });
},
formatValue: (item) => {
@@ -94,7 +108,7 @@ export const SidebarTabPicker = createSettingsPicker({
];
return SidebarTabs[item];
},
- getItemKey: (item) => item,
+ getItemKey: (item) => `side-bar-tab-picker-${item}`,
options: [0, 1, 2],
compareValue: (current, item) => current === item,
isFeatureAvailable: async () => {
@@ -111,12 +125,12 @@ export const SidebarTabPicker = createSettingsPicker({
}
return result.isAllowed;
},
- isOptionAvailable: () => true
+ isOptionAvailable: async () => true
});
export const TrashIntervalPicker = createSettingsPicker({
getValue: () => db.settings.getTrashCleanupInterval(),
- updateValue: (item) => {
+ updateValue: async (item) => {
db.settings.setTrashCleanupInterval(item);
},
formatValue: (item) => {
@@ -127,9 +141,9 @@ export const TrashIntervalPicker = createSettingsPicker({
: strings.days(item);
},
getItemKey: (item) => item.toString(),
- options: [-1, 1, 7, 30, 365],
+ options: [-1, 1, 7, 30, 365] as TrashCleanupInterval[],
compareValue: (current, item) => current === item,
- isFeatureAvailable: () => true,
+ isFeatureAvailable: async () => true,
isOptionAvailable: async () => {
const disableTrashFeature = await isFeatureAvailable("disableTrashCleanup");
if (!disableTrashFeature.isAllowed) {
@@ -148,7 +162,7 @@ export const TrashIntervalPicker = createSettingsPicker({
export const DateFormatPicker = createSettingsPicker({
getValue: () => db.settings.getDateFormat(),
- updateValue: (item) => {
+ updateValue: async (item) => {
db.settings.setDateFormat(item);
useSettingStore.setState({
dateFormat: item
@@ -160,13 +174,13 @@ export const DateFormatPicker = createSettingsPicker({
getItemKey: (item) => item,
options: DATE_FORMATS,
compareValue: (current, item) => current === item,
- isFeatureAvailable: () => true,
- isOptionAvailable: () => true
+ isFeatureAvailable: async () => true,
+ isOptionAvailable: async () => true
});
export const DayFormatPicker = createSettingsPicker({
getValue: () => db.settings.getDayFormat(),
- updateValue: (item) => {
+ updateValue: async (item) => {
db.settings.setDayFormat(item);
useSettingStore.setState({
dayFormat: item
@@ -176,15 +190,15 @@ export const DayFormatPicker = createSettingsPicker({
return `${strings.dayFormat()} (${dayjs().format(DayFormatFormats[item])})`;
},
getItemKey: (item) => item,
- options: DAY_FORMATS,
+ options: DAY_FORMATS as DayFormat[],
compareValue: (current, item) => current === item,
- isFeatureAvailable: () => true,
- isOptionAvailable: () => true
+ isFeatureAvailable: async () => true,
+ isOptionAvailable: async () => true
});
export const WeekFormatPicker = createSettingsPicker({
getValue: () => db.settings.getWeekFormat(),
- updateValue: (item) => {
+ updateValue: async (item) => {
db.settings.setWeekFormat(item);
useSettingStore.setState({
weekFormat: item
@@ -194,10 +208,10 @@ export const WeekFormatPicker = createSettingsPicker({
return `${WeekFormatNames[item]}`;
},
getItemKey: (item) => item,
- options: WEEK_FORMATS,
+ options: WEEK_FORMATS as WeekFormat[],
compareValue: (current, item) => current === item,
- isFeatureAvailable: () => true,
- isOptionAvailable: () => true
+ isFeatureAvailable: async () => true,
+ isOptionAvailable: async () => true
});
const TimeFormats = {
@@ -207,7 +221,7 @@ const TimeFormats = {
export const TimeFormatPicker = createSettingsPicker({
getValue: () => db.settings.getTimeFormat(),
- updateValue: (item) => {
+ updateValue: async (item) => {
db.settings.setTimeFormat(item);
useSettingStore.setState({
timeFormat: item
@@ -217,15 +231,18 @@ export const TimeFormatPicker = createSettingsPicker({
return `${strings[item]()} (${dayjs().format(TimeFormats[item])})`;
},
getItemKey: (item) => item,
- options: TIME_FORMATS,
+ options: TIME_FORMATS as TimeFormat[],
compareValue: (current, item) => current === item,
- isFeatureAvailable: () => true,
- isOptionAvailable: () => true
+ isFeatureAvailable: async () => true,
+ isOptionAvailable: async () => true
});
-export const BackupReminderPicker = createSettingsPicker({
+export const BackupReminderPicker = createSettingsPicker<
+ Settings["reminder"],
+ Settings["reminder"]
+>({
getValue: () => useSettingStore.getState().settings.reminder,
- updateValue: (item) => {
+ updateValue: async (item) => {
SettingsService.set({ reminder: item });
},
formatValue: (item) => {
@@ -237,39 +254,40 @@ export const BackupReminderPicker = createSettingsPicker({
requiresVerification: () => {
return (
!useSettingStore.getState().settings.encryptedBackup &&
- useUserStore.getState().user
+ !!useUserStore.getState().user
);
},
- isFeatureAvailable: () => true,
- isOptionAvailable: () => true
+ isFeatureAvailable: async () => true,
+ isOptionAvailable: async () => true
});
export const BackupWithAttachmentsReminderPicker = createSettingsPicker({
getValue: () => useSettingStore.getState().settings.fullBackupReminder,
- updateValue: (item) => {
+ updateValue: async (item) => {
SettingsService.set({ fullBackupReminder: item });
},
formatValue: (item) => {
+ //@ts-ignore
return item === "useroff" || item === "off" || item === "never"
? "Off"
: item.slice(0, 1).toUpperCase() + item.slice(1);
},
getItemKey: (item) => item,
- options: ["never", "weekly", "monthly"],
+ options: ["never", "weekly", "monthly"] as Settings["fullBackupReminder"][],
compareValue: (current, item) => current === item,
requiresVerification: () => {
return (
!useSettingStore.getState().settings.encryptedBackup &&
- useUserStore.getState().user
+ !!useUserStore.getState().user
);
},
- isFeatureAvailable: () => true,
- isOptionAvailable: () => true
+ isFeatureAvailable: async () => true,
+ isOptionAvailable: async () => true
});
export const ApplockTimerPicker = createSettingsPicker({
getValue: () => useSettingStore.getState().settings.appLockTimer,
- updateValue: (item) => {
+ updateValue: async (item) => {
SettingsService.set({ appLockTimer: item });
},
formatValue: (item) => {
@@ -287,6 +305,6 @@ export const ApplockTimerPicker = createSettingsPicker({
onVerify: () => {
return verifyUserWithApplock();
},
- isFeatureAvailable: () => true,
- isOptionAvailable: () => true
+ isFeatureAvailable: async () => true,
+ isOptionAvailable: async () => true
});