diff --git a/apps/desktop/src/utils/autoupdater.ts b/apps/desktop/src/utils/autoupdater.ts index c0e59009c..7f3255fa9 100644 --- a/apps/desktop/src/utils/autoupdater.ts +++ b/apps/desktop/src/utils/autoupdater.ts @@ -37,7 +37,11 @@ async function configureAutoUpdater() { config.releaseTrack === "stable" && autoUpdater.currentVersion.prerelease.length > 0; autoUpdater.allowPrerelease = false; - autoUpdater.autoInstallOnAppQuit = true; + // Do NOT auto-install on quit. On Windows, if the system shuts down while + // the NSIS installer is running, it first removes all old files and then + // gets killed before copying new ones — leaving an empty install directory. + // Updates should only be installed when the user explicitly triggers it. + autoUpdater.autoInstallOnAppQuit = false; autoUpdater.disableWebInstaller = true; } diff --git a/apps/mobile/app/app.tsx b/apps/mobile/app/app.tsx index 7e92c8042..f936316bb 100644 --- a/apps/mobile/app/app.tsx +++ b/apps/mobile/app/app.tsx @@ -23,7 +23,7 @@ import { THEME_COMPATIBILITY_VERSION, useThemeEngineStore } from "@notesnook/theme"; -import React, { useEffect } from "react"; +import React, { PropsWithChildren, useEffect } from "react"; import { Appearance, I18nManager, Linking, StatusBar } from "react-native"; import "react-native-gesture-handler"; import { GestureHandlerRootView } from "react-native-gesture-handler"; @@ -106,8 +106,10 @@ let currTheme = : SettingsService.getProperty("lighTheme"); useThemeEngineStore.getState().setTheme(currTheme); -export const withTheme = (Element: (props: any) => JSX.Element) => { - return function AppWithThemeProvider(props: any) { +export const withTheme = ( + Element: (props: PropsWithChildren) => JSX.Element +) => { + return function AppWithThemeProvider(props: PropsWithChildren) { const [colorScheme, darkTheme, lightTheme] = useThemeStore((state) => [ state.colorScheme, state.darkTheme, diff --git a/apps/mobile/app/common/database/encryption.ts b/apps/mobile/app/common/database/encryption.ts index 051ade492..4f6308d9f 100644 --- a/apps/mobile/app/common/database/encryption.ts +++ b/apps/mobile/app/common/database/encryption.ts @@ -25,7 +25,6 @@ import * as Keychain from "react-native-keychain"; import { MMKVLoader, ProcessingModes } from "react-native-mmkv-storage"; import { generateSecureRandom } from "react-native-securerandom"; import { DatabaseLogger } from "."; -import { ToastManager } from "../../services/event-manager"; import { MMKV } from "./mmkv"; // Database key cipher is persisted across different user sessions hence it has @@ -205,9 +204,8 @@ export async function getDatabaseKey(appLockPassword?: string) { } if (await Keychain.hasInternetCredentials("notesnook")) { - const userKeyCredentials = await Keychain.getInternetCredentials( - "notesnook" - ); + const userKeyCredentials = + await Keychain.getInternetCredentials("notesnook"); if (userKeyCredentials) { const userKeyCipher: Cipher = (await encrypt( diff --git a/apps/mobile/app/common/database/index.ts b/apps/mobile/app/common/database/index.ts index 63731f200..ec65abff6 100644 --- a/apps/mobile/app/common/database/index.ts +++ b/apps/mobile/app/common/database/index.ts @@ -72,7 +72,7 @@ export async function setupDatabase(password?: string) { ({ compress: Gzip.deflate, decompress: Gzip.inflate - } as ICompressor), + }) as ICompressor, batchSize: 50, sqliteOptions: { dialect: (name) => ({ diff --git a/apps/mobile/app/common/database/sqlite.kysely.ts b/apps/mobile/app/common/database/sqlite.kysely.ts index 04a0c4857..64c259816 100644 --- a/apps/mobile/app/common/database/sqlite.kysely.ts +++ b/apps/mobile/app/common/database/sqlite.kysely.ts @@ -109,8 +109,8 @@ class RNSqliteConnection implements DatabaseConnection { query.kind === "SelectQueryNode" ? "query" : query.kind === "RawNode" - ? "raw" - : "exec"; + ? "raw" + : "exec"; const result = await this.db.executeAsync(sql, parameters as any[]); diff --git a/apps/mobile/app/common/filesystem/io.ts b/apps/mobile/app/common/filesystem/io.ts index c3db265aa..37b9d5d48 100644 --- a/apps/mobile/app/common/filesystem/io.ts +++ b/apps/mobile/app/common/filesystem/io.ts @@ -112,8 +112,8 @@ export async function writeEncryptedBase64( async function deleteLocalFile(filename: string) { try { await createCacheDir(); - let path = cacheDir + `/${filename}`; - let exists = await RNFetchBlob.fs.exists(path); + const path = cacheDir + `/${filename}`; + const exists = await RNFetchBlob.fs.exists(path); if (Platform.OS === "ios" && !exists) { const iosAppGroup = Platform.OS === "ios" @@ -309,7 +309,9 @@ export async function deleteDCacheFiles() { }); } } - } catch (e) {} + } catch (e) { + /** Empty */ + } } export async function getCachePathForFile(filename: string) { diff --git a/apps/mobile/app/components/announcements/announcement.tsx b/apps/mobile/app/components/announcements/announcement.tsx index 329ccc282..47ecabdc0 100644 --- a/apps/mobile/app/components/announcements/announcement.tsx +++ b/apps/mobile/app/components/announcements/announcement.tsx @@ -36,7 +36,7 @@ export const Announcement = () => { state.announcements, state.remove ]); - let announcement = announcements.length > 0 ? announcements[0] : null; + const announcement = announcements.length > 0 ? announcements[0] : null; const selectionMode = useSelectionStore((state) => state.selectionMode); return !announcement || selectionMode ? null : ( diff --git a/apps/mobile/app/components/announcements/cta.tsx b/apps/mobile/app/components/announcements/cta.tsx index 7d2c4938b..2feb2ab66 100644 --- a/apps/mobile/app/components/announcements/cta.tsx +++ b/apps/mobile/app/components/announcements/cta.tsx @@ -32,7 +32,7 @@ import { Action } from "../../stores/use-message-store"; export const Cta = (props: BodyItemProps) => { const { colors } = useThemeColors(); - let buttons = + const buttons = props.item.actions.filter((item) => allowedOnPlatform(item.platforms)) || []; diff --git a/apps/mobile/app/components/app-lock/index.tsx b/apps/mobile/app/components/app-lock/index.tsx index b652e4bc5..bcab38b15 100644 --- a/apps/mobile/app/components/app-lock/index.tsx +++ b/apps/mobile/app/components/app-lock/index.tsx @@ -53,7 +53,6 @@ import Heading from "../ui/typography/heading"; import Paragraph from "../ui/typography/paragraph"; import { KeyboardAwareScrollView } from "react-native-keyboard-aware-scroll-view"; import { strings } from "@notesnook/intl"; -import { AppFontSize } from "../../utils/size"; import { editorController } from "../../screens/editor/tiptap/utils"; import { useTabStore } from "../../screens/editor/tiptap/use-tab-store"; @@ -239,8 +238,8 @@ const AppLocked = () => { deviceMode !== "mobile" ? "50%" : Platform.OS == "ios" - ? "95%" - : "100%", + ? "95%" + : "100%", paddingHorizontal: 12, marginBottom: 30, marginTop: 15, diff --git a/apps/mobile/app/components/attachments/actions.tsx b/apps/mobile/app/components/attachments/actions.tsx index 7adf4490e..811c08a0e 100644 --- a/apps/mobile/app/components/attachments/actions.tsx +++ b/apps/mobile/app/components/attachments/actions.tsx @@ -46,7 +46,6 @@ import { eOnLoadNote } from "../../utils/events"; import { AppFontSize } from "../../utils/size"; -import { sleep } from "../../utils/time"; import { Dialog } from "../dialog"; import { presentDialog } from "../dialog/functions"; import { openNote } from "../list-items/note/wrapper"; diff --git a/apps/mobile/app/components/attachments/index.tsx b/apps/mobile/app/components/attachments/index.tsx index 53a2580a7..b5b7b6943 100644 --- a/apps/mobile/app/components/attachments/index.tsx +++ b/apps/mobile/app/components/attachments/index.tsx @@ -17,7 +17,6 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { LegendList } from "@legendapp/list"; import { Attachment, FilteredSelector, diff --git a/apps/mobile/app/components/auth/forgot-password.tsx b/apps/mobile/app/components/auth/forgot-password.tsx index 67f82e16e..85ced9c76 100644 --- a/apps/mobile/app/components/auth/forgot-password.tsx +++ b/apps/mobile/app/components/auth/forgot-password.tsx @@ -53,7 +53,7 @@ export const ForgotPassword = ({ userEmail }: { userEmail: string }) => { } setLoading(true); try { - let lastRecoveryEmailTime = SettingsService.get().lastRecoveryEmailTime; + const lastRecoveryEmailTime = SettingsService.get().lastRecoveryEmailTime; if ( lastRecoveryEmailTime && Date.now() - lastRecoveryEmailTime < 60000 * 3 diff --git a/apps/mobile/app/components/auth/login.tsx b/apps/mobile/app/components/auth/login.tsx index e1e2741f4..efa44ba28 100644 --- a/apps/mobile/app/components/auth/login.tsx +++ b/apps/mobile/app/components/auth/login.tsx @@ -22,14 +22,9 @@ import { useThemeColors } from "@notesnook/theme"; import { RouteProp, useRoute } from "@react-navigation/native"; import React, { useEffect, useState } from "react"; import { TouchableOpacity, View, useWindowDimensions } from "react-native"; -import { SheetManager } from "react-native-actions-sheet"; import { KeyboardAwareScrollView } from "react-native-keyboard-aware-scroll-view"; import { DDS } from "../../services/device-detection"; -import { - eSendEvent, - presentSheet, - ToastManager -} from "../../services/event-manager"; +import { eSendEvent, presentSheet } from "../../services/event-manager"; import Navigation from "../../services/navigation"; import PremiumService from "../../services/premium"; import SettingsService from "../../services/settings"; @@ -195,8 +190,8 @@ export const Login = ({ ? "50%" : "49.99%" : focused - ? "100%" - : "99.9%", + ? "100%" + : "99.9%", backgroundColor: colors.primary.background, alignSelf: "center", paddingHorizontal: DDS.isTab ? 0 : DefaultAppStyles.GAP, diff --git a/apps/mobile/app/components/auth/session-expired.tsx b/apps/mobile/app/components/auth/session-expired.tsx index 360f8153e..377bc6d79 100644 --- a/apps/mobile/app/components/auth/session-expired.tsx +++ b/apps/mobile/app/components/auth/session-expired.tsx @@ -92,7 +92,7 @@ export const SessionExpired = () => { const open = React.useCallback(async () => { try { - let res = await db.tokenManager.getToken(); + const res = await db.tokenManager.getToken(); if (!res) throw new Error("no token found"); if (db.tokenManager._isTokenExpired(res)) throw new Error("token expired"); @@ -102,7 +102,7 @@ export const SessionExpired = () => { Sync.run("global", false, "full", async (complete) => { if (!complete) { - let user = await db.user.getUser(); + const user = await db.user.getUser(); if (!user) return; email.current = user.email; setVisible(true); @@ -115,7 +115,7 @@ export const SessionExpired = () => { setVisible(false); }); } catch (e) { - let user = await db.user.getUser(); + const user = await db.user.getUser(); if (!user) return; email.current = user.email; setFocused(false); diff --git a/apps/mobile/app/components/auth/signup.tsx b/apps/mobile/app/components/auth/signup.tsx index f525d4bcf..06f870b21 100644 --- a/apps/mobile/app/components/auth/signup.tsx +++ b/apps/mobile/app/components/auth/signup.tsx @@ -99,7 +99,7 @@ export const Signup = ({ try { setCurrentStep(SignupSteps.createAccount); await db.user.signup(email.current!.toLowerCase(), password.current!); - let user = await db.user.getUser(); + const user = await db.user.getUser(); setUser(user); setLastSynced(await db.lastSynced()); clearMessage(); diff --git a/apps/mobile/app/components/date-picker/index.tsx b/apps/mobile/app/components/date-picker/index.tsx index 7abf8ee47..68f4c14ff 100644 --- a/apps/mobile/app/components/date-picker/index.tsx +++ b/apps/mobile/app/components/date-picker/index.tsx @@ -1,3 +1,22 @@ +/* +This file is part of the Notesnook project (https://notesnook.com/) + +Copyright (C) 2023 Streetwriters (Private) Limited + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +import React from "react"; import { useThemeColors } from "@notesnook/theme"; import { useRef } from "react"; import { View } from "react-native"; diff --git a/apps/mobile/app/components/dialog/base-dialog.tsx b/apps/mobile/app/components/dialog/base-dialog.tsx index 7712c6d4f..f2b0ce4b2 100644 --- a/apps/mobile/app/components/dialog/base-dialog.tsx +++ b/apps/mobile/app/components/dialog/base-dialog.tsx @@ -23,7 +23,6 @@ import { ColorValue, KeyboardAvoidingView, Modal, - Platform, SafeAreaView, StyleSheet, TouchableOpacity, @@ -136,8 +135,8 @@ const BaseDialog = ({ backgroundColor: background ? background : transparent - ? "transparent" - : "rgba(0,0,0,0.3)" + ? "transparent" + : "rgba(0,0,0,0.3)" }} > diff --git a/apps/mobile/app/components/dialog/dialog-header.tsx b/apps/mobile/app/components/dialog/dialog-header.tsx index 311da4630..eff4dad14 100644 --- a/apps/mobile/app/components/dialog/dialog-header.tsx +++ b/apps/mobile/app/components/dialog/dialog-header.tsx @@ -22,7 +22,6 @@ import { Text, View, ViewStyle } from "react-native"; import { useThemeColors } from "@notesnook/theme"; import { AppFontSize } from "../../utils/size"; import { Button, ButtonProps } from "../ui/button"; -import { PressableProps } from "../ui/pressable"; import Heading from "../ui/typography/heading"; import Paragraph from "../ui/typography/paragraph"; import { DefaultAppStyles } from "../../utils/styles"; diff --git a/apps/mobile/app/components/dialogs/vault/index.tsx b/apps/mobile/app/components/dialogs/vault/index.tsx index bf1d65792..0cfdf7661 100644 --- a/apps/mobile/app/components/dialogs/vault/index.tsx +++ b/apps/mobile/app/components/dialogs/vault/index.tsx @@ -110,61 +110,6 @@ export const VaultDialog: React.FC = () => { const confirmPasswordRef = useRef(null); const newPasswordRef = useRef(null); - const open = useCallback(async (data: Vault) => { - const biometry = await BiometricService.isBiometryAvailable(); - const available = !!biometry; - const fingerprint = await BiometricService.hasInternetCredentials(); - - if (data.item) { - const locked = await db.vaults.itemExists(data.item); - noteLockedRef.current = locked; - if (!locked) { - const content = await db.content.findByNoteId(data.item!.id); - if (content && isEncryptedContent(content)) { - noteLockedRef.current = true; - } - } - } - - // Set refs - noteRef.current = data.item; - titleRef.current = data.title || strings.goToEditor(); - descriptionRef.current = data.description || null; - paragraphRef.current = data.paragraph || null; - buttonTitleRef.current = data.buttonTitle || null; - positiveButtonTypeRef.current = data.positiveButtonType || "transparent"; - customActionTitleRef.current = data.customActionTitle || null; - customActionParagraphRef.current = data.customActionParagraph || null; - onUnlockRef.current = data.onUnlock; - requestTypeRef.current = data.requestType; - - // Set UI state - setIsBiometryAvailable(available); - setIsBiometryEnrolled(fingerprint); - setBiometricUnlock(fingerprint); - setWrongPassword(false); - setPasswordsDontMatch(false); - setDeleteAll(false); - setLoading(false); - - // Auto-unlock with fingerprint if applicable - const canAutoUnlock = - fingerprint && - data.requestType !== VaultRequestType.EnableFingerprint && - data.requestType !== VaultRequestType.RevokeFingerprint && - data.requestType !== VaultRequestType.ChangePassword && - data.requestType !== VaultRequestType.ClearVault && - data.requestType !== VaultRequestType.DeleteVault && - data.requestType !== VaultRequestType.CustomAction && - data.requestType !== VaultRequestType.PermanentUnlock; - - if (canAutoUnlock) { - await onPressFingerprintAuth(data.title, data.description); - } else { - setVisible(true); - } - }, []); - const close = useCallback(() => { if (loading) { ToastManager.show({ @@ -292,6 +237,45 @@ export const VaultDialog: React.FC = () => { setLoading(false); }, [close]); + const enrollFingerprint = useCallback( + async (password: string) => { + setLoading(true); + try { + await db.vault.unlock(password); + await BiometricService.storeCredentials(password); + setLoading(false); + eSendEvent("vaultUpdated"); + ToastManager.show({ + heading: strings.biometricUnlockEnabled(), + type: "success", + context: "global" + }); + close(); + } catch (e) { + close(); + ToastManager.show({ + heading: strings.passwordIncorrect(), + type: "error", + context: "local" + }); + setLoading(false); + } + }, + [close] + ); + + const takeErrorAction = useCallback(() => { + setWrongPassword(true); + setVisible(true); + setTimeout(() => { + ToastManager.show({ + heading: strings.passwordIncorrect(), + type: "error", + context: "local" + }); + }, 500); + }, []); + const lockNote = useCallback(async () => { if (!passwordRef.current || passwordRef.current.trim() === "") { ToastManager.show({ @@ -333,7 +317,13 @@ export const VaultDialog: React.FC = () => { .catch((e) => { takeErrorAction(); }); - }, [close, biometricUnlock, isBiometryEnrolled]); + }, [ + biometricUnlock, + isBiometryEnrolled, + close, + enrollFingerprint, + takeErrorAction + ]); const openInEditor = useCallback( (note: Note & { content?: NoteContent }) => { @@ -387,19 +377,7 @@ export const VaultDialog: React.FC = () => { } catch (e) { takeErrorAction(); } - }, [close]); - - const takeErrorAction = useCallback(() => { - setWrongPassword(true); - setVisible(true); - setTimeout(() => { - ToastManager.show({ - heading: strings.passwordIncorrect(), - type: "error", - context: "local" - }); - }, 500); - }, []); + }, [close, takeErrorAction]); const openNote = useCallback(async () => { try { @@ -440,6 +418,7 @@ export const VaultDialog: React.FC = () => { }, [ biometricUnlock, isBiometryEnrolled, + enrollFingerprint, openInEditor, shareNote, deleteNote, @@ -464,33 +443,6 @@ export const VaultDialog: React.FC = () => { } }, [permanantUnlock, openNote]); - const enrollFingerprint = useCallback( - async (password: string) => { - setLoading(true); - try { - await db.vault.unlock(password); - await BiometricService.storeCredentials(password); - setLoading(false); - eSendEvent("vaultUpdated"); - ToastManager.show({ - heading: strings.biometricUnlockEnabled(), - type: "success", - context: "global" - }); - close(); - } catch (e) { - close(); - ToastManager.show({ - heading: strings.passwordIncorrect(), - type: "error", - context: "local" - }); - setLoading(false); - } - }, - [close] - ); - const createVault = useCallback(async () => { await db.vault.create(passwordRef.current || ""); @@ -536,31 +488,6 @@ export const VaultDialog: React.FC = () => { } }, []); - const onPressFingerprintAuth = useCallback( - async (title?: string, description?: string) => { - try { - const credentials = await BiometricService.getCredentials( - title || titleRef.current, - description || descriptionRef.current || "" - ); - - if (!credentials) throw new Error("Failed to get user credentials"); - - if (credentials?.password) { - passwordRef.current = credentials.password; - onPress(); - } else { - eSendEvent(eCloseActionSheet); - await sleep(300); - setVisible(true); - } - } catch (e) { - console.error(e); - } - }, - [] - ); - const onPress = useCallback(async () => { const requestType = requestTypeRef.current; @@ -689,6 +616,89 @@ export const VaultDialog: React.FC = () => { deleteVault ]); + const onPressFingerprintAuth = useCallback( + async (title?: string, description?: string) => { + try { + const credentials = await BiometricService.getCredentials( + title || titleRef.current, + description || descriptionRef.current || "" + ); + + if (!credentials) throw new Error("Failed to get user credentials"); + + if (credentials?.password) { + passwordRef.current = credentials.password; + onPress(); + } else { + eSendEvent(eCloseActionSheet); + await sleep(300); + setVisible(true); + } + } catch (e) { + console.error(e); + } + }, + [onPress] + ); + + const open = useCallback( + async (data: Vault) => { + const biometry = await BiometricService.isBiometryAvailable(); + const available = !!biometry; + const fingerprint = await BiometricService.hasInternetCredentials(); + + if (data.item) { + const locked = await db.vaults.itemExists(data.item); + noteLockedRef.current = locked; + if (!locked) { + const content = await db.content.findByNoteId(data.item!.id); + if (content && isEncryptedContent(content)) { + noteLockedRef.current = true; + } + } + } + + // Set refs + noteRef.current = data.item; + titleRef.current = data.title || strings.goToEditor(); + descriptionRef.current = data.description || null; + paragraphRef.current = data.paragraph || null; + buttonTitleRef.current = data.buttonTitle || null; + positiveButtonTypeRef.current = data.positiveButtonType || "transparent"; + customActionTitleRef.current = data.customActionTitle || null; + customActionParagraphRef.current = data.customActionParagraph || null; + onUnlockRef.current = data.onUnlock; + requestTypeRef.current = data.requestType; + + // Set UI state + setIsBiometryAvailable(available); + setIsBiometryEnrolled(fingerprint); + setBiometricUnlock(fingerprint); + setWrongPassword(false); + setPasswordsDontMatch(false); + setDeleteAll(false); + setLoading(false); + + // Auto-unlock with fingerprint if applicable + const canAutoUnlock = + fingerprint && + data.requestType !== VaultRequestType.EnableFingerprint && + data.requestType !== VaultRequestType.RevokeFingerprint && + data.requestType !== VaultRequestType.ChangePassword && + data.requestType !== VaultRequestType.ClearVault && + data.requestType !== VaultRequestType.DeleteVault && + data.requestType !== VaultRequestType.CustomAction && + data.requestType !== VaultRequestType.PermanentUnlock; + + if (canAutoUnlock) { + await onPressFingerprintAuth(data.title, data.description); + } else { + setVisible(true); + } + }, + [onPressFingerprintAuth] + ); + useEffect(() => { eSubscribeEvent(eOpenVaultDialog, open); eSubscribeEvent(eCloseVaultDialog, close); diff --git a/apps/mobile/app/components/fluid-panels/index.tsx b/apps/mobile/app/components/fluid-panels/index.tsx index 6d2a75159..c2c0d0372 100644 --- a/apps/mobile/app/components/fluid-panels/index.tsx +++ b/apps/mobile/app/components/fluid-panels/index.tsx @@ -22,7 +22,6 @@ import React, { RefObject, useEffect, useImperativeHandle, - useMemo, useRef, useState } from "react"; @@ -39,7 +38,6 @@ import Animated, { WithSpringConfig, withTiming } from "react-native-reanimated"; -import { useTabStore } from "../../screens/editor/tiptap/use-tab-store"; import { eSendEvent } from "../../services/event-manager"; import { useSettingStore } from "../../stores/use-setting-store"; import { eClearEditor } from "../../utils/events"; diff --git a/apps/mobile/app/components/list/index.tsx b/apps/mobile/app/components/list/index.tsx index 54279e358..d33a48c66 100644 --- a/apps/mobile/app/components/list/index.tsx +++ b/apps/mobile/app/components/list/index.tsx @@ -77,10 +77,10 @@ export default function List(props: ListProps) { props.renderedInRoute === "Notes" ? "home" : props.renderedInRoute === "Favorites" - ? "favorites" - : props.renderedInRoute === "Trash" || props.dataType === "trash" - ? "trash" - : `${props.dataType}s`; + ? "favorites" + : props.renderedInRoute === "Trash" || props.dataType === "trash" + ? "trash" + : `${props.dataType}s`; const groupOptions = useGroupOptions(groupType); @@ -94,7 +94,7 @@ export default function List(props: ListProps) { (item: number | boolean, index: number) => { return props.data?.type(index); }, - [] + [props.data] ); const renderItem = React.useCallback( diff --git a/apps/mobile/app/components/list/reorderable-list.tsx b/apps/mobile/app/components/list/reorderable-list.tsx index 6658e072e..3047d024e 100644 --- a/apps/mobile/app/components/list/reorderable-list.tsx +++ b/apps/mobile/app/components/list/reorderable-list.tsx @@ -30,7 +30,7 @@ import { fluidTabsRef } from "../../utils/global-refs"; import { AppFontSize } from "../../utils/size"; import { useSideBarDraggingStore } from "../side-menu/dragging-store"; import { IconButton } from "../ui/icon-button"; -import { isFeatureAvailable, useIsFeatureAvailable } from "@notesnook/common"; +import { useIsFeatureAvailable } from "@notesnook/common"; import PaywallSheet from "../sheets/paywall"; import { strings } from "@notesnook/intl"; import { ToastManager } from "../../services/event-manager"; @@ -142,7 +142,7 @@ function ReorderableList({ items.push(...data.filter((i) => !itemOrderState.includes(i.id))); return items; - }, [data, customizableSidebarFeature?.isAllowed]); + }, [customizableSidebarFeature?.isAllowed, data, itemOrderState]); return ( diff --git a/apps/mobile/app/components/merge-conflicts/index.tsx b/apps/mobile/app/components/merge-conflicts/index.tsx index 8798ac386..80c50f6a4 100644 --- a/apps/mobile/app/components/merge-conflicts/index.tsx +++ b/apps/mobile/app/components/merge-conflicts/index.tsx @@ -20,7 +20,6 @@ along with this program. If not, see . import { getFormattedDate } from "@notesnook/common"; import { EncryptedContentItem, - isEncryptedContent, Note, UnencryptedContentItem } from "@notesnook/core"; @@ -75,9 +74,9 @@ const MergeConflicts = () => { const { height } = useSettingStore((state) => state.dimensions); const applyChanges = async () => { - let contentToSave = selectedContent; + const contentToSave = selectedContent; if (!contentToSave) return; - let note = await db.notes.note(contentToSave.noteId); + const note = await db.notes.note(contentToSave.noteId); if (!note) return; await db.notes.add({ id: note.id, @@ -462,7 +461,8 @@ const MergeConflicts = () => { { - const note = await db.notes.note(content.current?.noteId!); + if (!content.current?.noteId) return; + const note = await db.notes.note(content.current?.noteId); if (!note) return; loadContent({ id: note.id, diff --git a/apps/mobile/app/components/note-history/index.tsx b/apps/mobile/app/components/note-history/index.tsx index a39cd11b8..4b16c191f 100644 --- a/apps/mobile/app/components/note-history/index.tsx +++ b/apps/mobile/app/components/note-history/index.tsx @@ -63,22 +63,25 @@ const HistoryItem = ({ }${_end_time}`; }; - const preview = useCallback(async (item: HistorySession) => { - const content = await db.noteHistory.content(item.id); - presentSheet({ - component: ( - - ), - context: "note_history" - }); - }, []); + const preview = useCallback( + async (item: HistorySession) => { + const content = await db.noteHistory.content(item.id); + presentSheet({ + component: ( + + ), + context: "note_history" + }); + }, + [note] + ); return ( ( ), - [history] + [history, note] ); return ( diff --git a/apps/mobile/app/components/note-history/preview.tsx b/apps/mobile/app/components/note-history/preview.tsx index 647946eea..9124312bc 100644 --- a/apps/mobile/app/components/note-history/preview.tsx +++ b/apps/mobile/app/components/note-history/preview.tsx @@ -42,7 +42,6 @@ import { isEncryptedContent, Note, NoteContent, - SessionContentItem, TrashOrItem } from "@notesnook/core"; diff --git a/apps/mobile/app/components/paywall/index.tsx b/apps/mobile/app/components/paywall/index.tsx index c785aa33a..940f98ea7 100644 --- a/apps/mobile/app/components/paywall/index.tsx +++ b/apps/mobile/app/components/paywall/index.tsx @@ -19,7 +19,6 @@ along with this program. If not, see . import { getFeaturesTable } from "@notesnook/common"; import { - EV, EVENTS, Plan, SKUResponse, @@ -119,7 +118,7 @@ const PayWall = (props: NavigationProps<"PayWall">) => { } setStep(Steps.buy); } - }, [routeParams.state]); + }, [pricingPlans, routeParams.state]); useEffect(() => { let listener: NativeEventSubscription; @@ -137,7 +136,7 @@ const PayWall = (props: NavigationProps<"PayWall">) => { return () => { listener?.remove(); }; - }, [isFocused, step]); + }, [isFocused, routeParams.context, step]); useEffect(() => { const sub = db.eventManager.subscribe( @@ -154,7 +153,7 @@ const PayWall = (props: NavigationProps<"PayWall">) => { return () => { sub?.unsubscribe(); }; - }, []); + }, [routeParams.context]); const is5YearPlanSelected = ( isGithubRelease @@ -972,7 +971,7 @@ const PricingPlanCard = ({ .then((value) => { setRegionaDiscount(value); }); - }, [annualBilling]); + }, [WebPlan?.period, annualBilling, plan.id, pricingPlans]); useEffect(() => { if (!annualBilling) { diff --git a/apps/mobile/app/components/properties/color-tags.tsx b/apps/mobile/app/components/properties/color-tags.tsx index cdccd9a65..5bcc1ab47 100644 --- a/apps/mobile/app/components/properties/color-tags.tsx +++ b/apps/mobile/app/components/properties/color-tags.tsx @@ -27,7 +27,11 @@ import { View } from "react-native"; import Icon from "react-native-vector-icons/MaterialCommunityIcons"; import { notesnook } from "../../../e2e/test.ids"; import { db } from "../../common/database"; -import { eSendEvent, ToastManager } from "../../services/event-manager"; +import { + eSendEvent, + sendItemUpdateEvent, + ToastManager +} from "../../services/event-manager"; import Navigation from "../../services/navigation"; import { useMenuStore } from "../../stores/use-menu-store"; import { useRelationStore } from "../../stores/use-relation-store"; @@ -63,6 +67,7 @@ const ColorItem = ({ item, note }: { item: Color; note: Note }) => { useRelationStore.getState().update(); setColorNotes(); Navigation.queueRoutesForUpdate(); + sendItemUpdateEvent(item.id, "color"); eSendEvent(refreshNotesPage); }; @@ -127,7 +132,7 @@ export const ColorTags = ({ item }: { item: Note }) => { } useSettingStore.getState().setSheetKeyboardHandler(false); setVisible(true); - }, []); + }, [colorFeature]); return ( <> @@ -140,6 +145,7 @@ export const ColorTags = ({ item }: { item: Note }) => { useRelationStore.getState().update(); useMenuStore.getState().setColorNotes(); Navigation.queueRoutesForUpdate(); + sendItemUpdateEvent(color.id, "color"); eSendEvent(refreshNotesPage); }} /> diff --git a/apps/mobile/app/components/properties/date-meta.tsx b/apps/mobile/app/components/properties/date-meta.tsx index 8a5da0cba..ab75cab0a 100644 --- a/apps/mobile/app/components/properties/date-meta.tsx +++ b/apps/mobile/app/components/properties/date-meta.tsx @@ -35,7 +35,7 @@ export const DateMeta = ({ item }: { item: Item }) => { const [dateCreated, setDateCreated] = useState(item.dateCreated); function getDateMeta() { - let keys = Object.keys(item); + const keys = Object.keys(item); if (keys.includes("dateEdited")) keys.splice( keys.findIndex((k) => k === "dateModified"), diff --git a/apps/mobile/app/components/properties/items.tsx b/apps/mobile/app/components/properties/items.tsx index ffcea4df4..600d1ec92 100644 --- a/apps/mobile/app/components/properties/items.tsx +++ b/apps/mobile/app/components/properties/items.tsx @@ -321,7 +321,9 @@ export const Items = ({ [ colors.error.icon, colors.primary.accent, + colors.primary.border, colors.secondary.icon, + colors.static.orange, columnItemWidth, topBarSorting ] diff --git a/apps/mobile/app/components/properties/tags.jsx b/apps/mobile/app/components/properties/tags.jsx index 12a8bb261..8e14ccfd3 100644 --- a/apps/mobile/app/components/properties/tags.jsx +++ b/apps/mobile/app/components/properties/tags.jsx @@ -77,7 +77,7 @@ export const TagStrip = ({ item, close }) => { .then((tags) => { setTags(tags); }); - }, []); + }, [item]); return tags?.length > 0 ? ( ( @@ -229,7 +232,13 @@ export const BuyPlan = (props: { size={AppFontSize.lg} name="check" /> - {item} + + {item} + ))} @@ -243,8 +252,8 @@ export const BuyPlan = (props: { is5YearPlanSelected ? strings.purchase() : pricingPlans?.userCanRequestTrial - ? strings.subscribeAndStartTrial() - : strings.subscribe() + ? strings.subscribeAndStartTrial() + : strings.subscribe() } onPress={async () => { if (isGithubRelease) { @@ -359,26 +368,42 @@ const ProductItem = (props: { (product as Plan)?.id); useEffect(() => { - props.pricingPlans - ?.getRegionalDiscount( - props.pricingPlans.currentPlan?.id as string, - props.pricingPlans.isGithubRelease - ? ((product as Plan)?.period as string) - : props.productId - ) - .then((value) => { - if ( - value && - value.sku?.startsWith( - (props.pricingPlans.selectedProduct as RNIap.Subscription) - ?.productId - ) - ) { - props.pricingPlans.selectProduct(value?.sku as string); - } - setRegionaDiscount(value); - }); - }, []); + if (product) { + props.pricingPlans + ?.getRegionalDiscount( + props.pricingPlans.currentPlan?.id as string, + props.pricingPlans.isGithubRelease + ? ((product as Plan)?.period as string) + : props.productId + ) + .then((value) => { + if ( + value && + value.sku?.startsWith( + (props.pricingPlans.selectedProduct as RNIap.Subscription) + ?.productId + ) + ) { + props.pricingPlans.selectProduct(value?.sku as string); + } + setRegionaDiscount(value); + }); + } + }, [product, props.pricingPlans, props.productId]); + + const discountValue = + (isAnnual && !isGithubRelease) || + (isGithubRelease && (product as Plan)?.discount?.amount) + ? regionalDiscount + ? regionalDiscount.discount + : isGithubRelease + ? (product as Plan).discount?.amount + : props.pricingPlans.compareProductPrice( + props.pricingPlans.currentPlan?.id as string, + `notesnook.${props.pricingPlans.currentPlan?.id}.yearly`, + `notesnook.${props.pricingPlans.currentPlan?.id}.monthly` + ) + : undefined; return ( - {(isAnnual && !isGithubRelease) || - (isGithubRelease && (product as Plan)?.discount?.amount) ? ( + {discountValue ? ( - {strings.bestValue()} -{" "} - {strings.percentOff( - (regionalDiscount - ? regionalDiscount.discount - : isGithubRelease - ? (product as Plan).discount?.amount - : props.pricingPlans.compareProductPrice( - props.pricingPlans.currentPlan?.id as string, - `notesnook.${props.pricingPlans.currentPlan?.id}.yearly`, - `notesnook.${props.pricingPlans.currentPlan?.id}.monthly` - )) as string - )} + {strings.bestValue()} - {strings.percentOff(`${discountValue}`)} ) : null} diff --git a/apps/mobile/app/components/sheets/export-notes/share.jsx b/apps/mobile/app/components/sheets/export-notes/share.jsx index 1291f1a1e..a6204193e 100644 --- a/apps/mobile/app/components/sheets/export-notes/share.jsx +++ b/apps/mobile/app/components/sheets/export-notes/share.jsx @@ -21,7 +21,6 @@ import React from "react"; import { View } from "react-native"; import FileViewer from "react-native-file-viewer"; import { ToastManager } from "../../../services/event-manager"; -import { AppFontSize } from "../../../utils/size"; import { Button } from "../../ui/button"; import { strings } from "@notesnook/intl"; import { DefaultAppStyles } from "../../../utils/styles"; diff --git a/apps/mobile/app/components/sheets/menu-item-properties/index.tsx b/apps/mobile/app/components/sheets/menu-item-properties/index.tsx index 88c73678a..5d73269a8 100644 --- a/apps/mobile/app/components/sheets/menu-item-properties/index.tsx +++ b/apps/mobile/app/components/sheets/menu-item-properties/index.tsx @@ -28,7 +28,7 @@ import { ToastManager } from "../../../services/event-manager"; import SettingsService from "../../../services/settings"; -import { eCloseSheet } from "../../../utils/events"; +import { eAfterSync, eCloseSheet } from "../../../utils/events"; import { SideMenuItem } from "../../../utils/menu-items"; import { AppFontSize } from "../../../utils/size"; import { DefaultAppStyles } from "../../../utils/styles"; @@ -37,12 +37,17 @@ import AppIcon from "../../ui/AppIcon"; import { Pressable } from "../../ui/pressable"; import Paragraph from "../../ui/typography/paragraph"; import PaywallSheet from "../paywall"; +import { presentDialog } from "../../dialog/functions"; +import { db } from "../../../common/database"; +import { useTrashStore } from "../../../stores/use-trash-store"; export const MenuItemProperties = ({ item }: { item: SideMenuItem }) => { const { colors } = useThemeColors(); const featuresAvailable = useAreFeaturesAvailable([ "customHomepage", "customizableSidebar" ]); + const trash = useTrashStore((state) => state.items); + return !featuresAvailable ? null : ( { }, icon: "sort-ascending", locked: !featuresAvailable?.customizableSidebar.isAllowed - } + }, + ...(item.id === "Trash" + ? [ + { + title: strings.clearTrash(), + onPress: async () => { + if (!trash || trash?.length === 0) return; + eSendEvent(eCloseSheet); + setTimeout(() => { + presentDialog({ + title: strings.clearTrashConfirm(), + paragraph: strings.clearTrashDesc(), + positiveText: strings.clear(), + positivePress: async () => { + await db.trash.clear(); + useTrashStore.getState().clear(); + eSendEvent(eAfterSync); + ToastManager.show({ + message: strings.trashCleared(), + type: "success" + }); + return true; + } + }); + }, 500); + }, + icon: "delete-sweep-outline", + disabled: !trash || trash?.length === 0 + } + ] + : []) ].map((item) => ( { gap: DefaultAppStyles.GAP_SMALL, borderRadius: 0, paddingHorizontal: DefaultAppStyles.GAP, - opacity: item.locked ? 0.6 : 1 + opacity: item.disabled || item.locked ? 0.6 : 1 }} onPress={() => { item.onPress(); diff --git a/apps/mobile/app/components/sheets/notebooks/index.tsx b/apps/mobile/app/components/sheets/notebooks/index.tsx index 5e35eb5ac..328ce2748 100644 --- a/apps/mobile/app/components/sheets/notebooks/index.tsx +++ b/apps/mobile/app/components/sheets/notebooks/index.tsx @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Notebook, VirtualizedGrouping } from "@notesnook/core"; +import { Notebook } from "@notesnook/core"; import { strings } from "@notesnook/intl"; import { useThemeColors } from "@notesnook/theme"; import React, { useEffect, useState } from "react"; diff --git a/apps/mobile/app/components/sheets/paywall/index.tsx b/apps/mobile/app/components/sheets/paywall/index.tsx index c6c92c82b..1000a2c14 100644 --- a/apps/mobile/app/components/sheets/paywall/index.tsx +++ b/apps/mobile/app/components/sheets/paywall/index.tsx @@ -1,3 +1,22 @@ +/* +This file is part of the Notesnook project (https://notesnook.com/) + +Copyright (C) 2023 Streetwriters (Private) Limited + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +import React from "react"; import { FeatureId, FeatureResult } from "@notesnook/common"; import { SubscriptionPlan, SubscriptionProvider } from "@notesnook/core"; import { strings } from "@notesnook/intl"; diff --git a/apps/mobile/app/components/sheets/plan-limits/index.tsx b/apps/mobile/app/components/sheets/plan-limits/index.tsx index e6a40140f..91667a0c7 100644 --- a/apps/mobile/app/components/sheets/plan-limits/index.tsx +++ b/apps/mobile/app/components/sheets/plan-limits/index.tsx @@ -1,3 +1,22 @@ +/* +This file is part of the Notesnook project (https://notesnook.com/) + +Copyright (C) 2023 Streetwriters (Private) Limited + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +import React from "react"; import { FeatureUsage, formatBytes, @@ -76,10 +95,10 @@ export function PlanLimits() { {item.total === Infinity ? strings.unlimited() : item.id === "storage" - ? `${formatBytes(item.used)}/${formatBytes( - item.total - )} ${strings.used()}` - : `${item.used}/${item.total} ${strings.used()}`} + ? `${formatBytes(item.used)}/${formatBytes( + item.total + )} ${strings.used()}` + : `${item.used}/${item.total} ${strings.used()}`} diff --git a/apps/mobile/app/components/sheets/publish-note/index.tsx b/apps/mobile/app/components/sheets/publish-note/index.tsx index fab6d28e9..1b9b7722e 100644 --- a/apps/mobile/app/components/sheets/publish-note/index.tsx +++ b/apps/mobile/app/components/sheets/publish-note/index.tsx @@ -28,12 +28,15 @@ import { TouchableOpacity, View } from "react-native"; -import Icon from "react-native-vector-icons/MaterialCommunityIcons"; //@ts-ignore import ToggleSwitch from "toggle-switch-react-native"; import { db } from "../../../common/database"; import { requestInAppReview } from "../../../services/app-review"; -import { presentSheet, ToastManager } from "../../../services/event-manager"; +import { + eSendEvent, + presentSheet, + ToastManager +} from "../../../services/event-manager"; import Navigation from "../../../services/navigation"; import { useAttachmentStore } from "../../../stores/use-attachment-store"; import { openLinkInBrowser } from "../../../utils/functions"; @@ -46,7 +49,8 @@ import Input from "../../ui/input"; import Heading from "../../ui/typography/heading"; import Paragraph from "../../ui/typography/paragraph"; import { useAsync } from "react-async-hook"; -import { isFeatureAvailable, useIsFeatureAvailable } from "@notesnook/common"; +import { eMenuItemUpdate } from "../../../utils/events"; +import { useIsFeatureAvailable } from "@notesnook/common"; async function fetchMonographData(noteId: string) { const monographId = db.monographs.monograph(noteId); @@ -118,6 +122,7 @@ const PublishNoteSheet = ({ await monographData.execute(); Navigation.queueRoutesForUpdate(); + eSendEvent(eMenuItemUpdate); setPublishLoading(false); } requestInAppReview(); @@ -144,6 +149,7 @@ const PublishNoteSheet = ({ await db.monographs.unpublish(note.id); monographData.execute(); Navigation.queueRoutesForUpdate(); + eSendEvent(eMenuItemUpdate); setPublishLoading(false); } } catch (e) { diff --git a/apps/mobile/app/components/side-menu/index.tsx b/apps/mobile/app/components/side-menu/index.tsx index 4d12c9809..7f8bce59b 100644 --- a/apps/mobile/app/components/side-menu/index.tsx +++ b/apps/mobile/app/components/side-menu/index.tsx @@ -79,6 +79,7 @@ type SimpleTabViewProps = { const createSceneMap = ( scenes: Record> ): ((props: { route: SimpleRoute }) => React.ReactNode) => { + // eslint-disable-next-line react/display-name return ({ route }: { route: SimpleRoute }) => { const SceneComponent = scenes[route.key]; if (!SceneComponent) return null; @@ -136,8 +137,8 @@ const SimpleTabView = ({ {loadedKeysRef.current.has(route.key) ? getSceneForRoute(route) : navigationState.index === routeIndex - ? getSceneForRoute(route) - : null} + ? getSceneForRoute(route) + : null} ))} @@ -432,12 +433,12 @@ const TabBar = (props: SimpleTabBarProps) => { name="plus" testID="sidebar-add-button" size={AppFontSize.lg - 2} + top={10} color={colors.primary.icon} onPress={async () => { if (props.navigationState.index === 1) { - const notebooksFeature = await isFeatureAvailable( - "notebooks" - ); + const notebooksFeature = + await isFeatureAvailable("notebooks"); if (!notebooksFeature.isAllowed) { PaywallSheet.present(notebooksFeature); return; @@ -485,6 +486,7 @@ const TabBar = (props: SimpleTabBarProps) => { ? "sort-ascending" : "sort-descending" } + top={10} testID="sidebar-sort-button" color={colors.primary.icon} onPress={() => { @@ -520,6 +522,7 @@ const TabBar = (props: SimpleTabBarProps) => { width: 28, height: 28 }} + top={10} testID="sidebar-theme-button" color={colors.primary.icon} name={isDark ? "weather-night" : "weather-sunny"} diff --git a/apps/mobile/app/components/side-menu/menu-item.tsx b/apps/mobile/app/components/side-menu/menu-item.tsx index 37ac890c6..65dc866ac 100644 --- a/apps/mobile/app/components/side-menu/menu-item.tsx +++ b/apps/mobile/app/components/side-menu/menu-item.tsx @@ -24,18 +24,22 @@ import Icon from "react-native-vector-icons/MaterialCommunityIcons"; import { useTotalNotes } from "../../hooks/use-db-item"; import { db } from "../../common/database"; -import { eSubscribeEvent } from "../../services/event-manager"; +import { + eSubscribeEvent, + subscribeToItemUpdate +} from "../../services/event-manager"; import Navigation from "../../services/navigation"; import useNavigationStore, { RouteParams } from "../../stores/use-navigation-store"; -import { eAfterSync } from "../../utils/events"; +import { eAfterSync, eMenuItemUpdate } from "../../utils/events"; import { SideMenuItem } from "../../utils/menu-items"; import { AppFontSize, defaultBorderRadius } from "../../utils/size"; import { DefaultAppStyles } from "../../utils/styles"; import { Pressable } from "../ui/pressable"; import Paragraph from "../ui/typography/paragraph"; import { useSideBarDraggingStore } from "./dragging-store"; +import { useRelationStore } from "../../stores/use-relation-store"; export function MenuItem({ item, @@ -56,13 +60,19 @@ export function MenuItem({ const totalNotes = useTotalNotes( item.dataType as "notebook" | "tag" | "color" ); + const update = useRelationStore((state) => state.updater); const getTotalNotesRef = useRef(totalNotes.getTotalNotes); getTotalNotesRef.current = totalNotes.getTotalNotes; - const menuItemCount = !item.data ? itemCount : totalNotes.totalNotes(item.data.id); + useEffect(() => { + if (item.data) { + getTotalNotesRef.current([item.data?.id]); + } + }, [update]); + useEffect(() => { const onSyncComplete = async () => { try { @@ -94,10 +104,20 @@ export function MenuItem({ /** Empty */ } }; - const event = eSubscribeEvent(eAfterSync, onSyncComplete); + const events = [eSubscribeEvent(eAfterSync, onSyncComplete)]; + + if (!item.data) { + events.push(eSubscribeEvent(eMenuItemUpdate, onSyncComplete)); + } + + if (item.data?.id) { + events.push( + subscribeToItemUpdate(item?.data?.id, item?.data?.type, onSyncComplete) + ); + } onSyncComplete(); return () => { - event?.unsubscribe(); + events?.forEach((e) => e?.unsubscribe()); }; }, [item.data, item.id]); @@ -151,8 +171,8 @@ export function MenuItem({ item.icon === "crown" ? colors.static.yellow : isFocused - ? colors.selected.icon - : colors.secondary.icon + ? colors.selected.icon + : colors.secondary.icon } size={AppFontSize.md} /> diff --git a/apps/mobile/app/components/side-menu/notebook-item.tsx b/apps/mobile/app/components/side-menu/notebook-item.tsx index e6538e0f9..ec8f49175 100644 --- a/apps/mobile/app/components/side-menu/notebook-item.tsx +++ b/apps/mobile/app/components/side-menu/notebook-item.tsx @@ -24,7 +24,8 @@ import { StoreApi, UseBoundStore } from "zustand"; import { useTotalNotes } from "../../hooks/use-db-item"; import { eSubscribeEvent, - eUnSubscribeEvent + eUnSubscribeEvent, + ToastManager } from "../../services/event-manager"; import { TreeItem } from "../../stores/create-notebook-tree-stores"; import { SelectionStore } from "../../stores/item-selection-store"; @@ -35,6 +36,7 @@ import AppIcon from "../ui/AppIcon"; import { IconButton } from "../ui/icon-button"; import { Pressable } from "../ui/pressable"; import Paragraph from "../ui/typography/paragraph"; +import { useRelationStore } from "../../stores/use-relation-store"; export const NotebookItem = ({ index, @@ -70,13 +72,14 @@ export const NotebookItem = ({ const notebook = item.notebook; const isFocused = focused; const { totalNotes, getTotalNotes } = useTotalNotes("notebook"); + const updater = useRelationStore(state => state.updater); const getTotalNotesRef = React.useRef(getTotalNotes); getTotalNotesRef.current = getTotalNotes; const { colors } = useThemeColors(); useEffect(() => { getTotalNotesRef.current([item.notebook.id]); - }, [item.notebook]); + }, [item.notebook, updater]); useEffect(() => { const onNotebookUpdate = (id?: string) => { @@ -101,7 +104,8 @@ export const NotebookItem = ({ ? 15 * item.depth : 15 * 5, width: "100%", - marginTop: 2 + marginTop: 2, + opacity: item.disabled ? 0.5 : 1 }} > { diff --git a/apps/mobile/app/components/side-menu/side-menu-notebooks.tsx b/apps/mobile/app/components/side-menu/side-menu-notebooks.tsx index 633251663..350018605 100644 --- a/apps/mobile/app/components/side-menu/side-menu-notebooks.tsx +++ b/apps/mobile/app/components/side-menu/side-menu-notebooks.tsx @@ -40,6 +40,7 @@ import { useSideMenuNotebookTreeStore } from "./stores"; import { LegendList } from "@legendapp/list"; +import { useRelationStore } from "../../stores/use-relation-store"; useSideMenuNotebookSelectionStore.setState({ multiSelect: true }); @@ -52,6 +53,7 @@ export const SideMenuNotebooks = () => { const [filteredNotebooks, setFilteredNotebooks] = React.useState(notebooks); const searchTimer = React.useRef(undefined); const lastQuery = React.useRef(undefined); + const updater = useRelationStore(state => state.updater); const loadRootNotebooks = React.useCallback(async () => { if (!filteredNotebooks) return; const _notebooks: Notebook[] = []; @@ -66,9 +68,6 @@ export const SideMenuNotebooks = () => { const updateNotebooks = React.useCallback(() => { if (lastQuery.current) { - // useSideMenuNotebookTreeStore.setState({ - // isSearching: true - // }); db.lookup .notebooks(lastQuery.current) .sorted(db.settings.getGroupOptions("notebooks")) @@ -76,16 +75,13 @@ export const SideMenuNotebooks = () => { setFilteredNotebooks(filtered); }); } else { - // useSideMenuNotebookTreeStore.setState({ - // isSearching: false - // }); setFilteredNotebooks(notebooks); } }, [notebooks]); useEffect(() => { updateNotebooks(); - }, [updateNotebooks]); + }, [updateNotebooks,updater]); useEffect(() => { (async () => { diff --git a/apps/mobile/app/components/side-menu/side-menu-tags.tsx b/apps/mobile/app/components/side-menu/side-menu-tags.tsx index 7842e6cb2..a7c3e2317 100644 --- a/apps/mobile/app/components/side-menu/side-menu-tags.tsx +++ b/apps/mobile/app/components/side-menu/side-menu-tags.tsx @@ -38,6 +38,7 @@ import { SideMenuHeader } from "./side-menu-header"; import { SideMenuListEmpty } from "./side-menu-list-empty"; import { useSideMenuTagsSelectionStore } from "./stores"; import { LegendList, LegendListRenderItemProps } from "@legendapp/list"; +import { useRelationStore } from "../../stores/use-relation-store"; const TagItem = (props: { tags: VirtualizedGrouping; @@ -55,12 +56,13 @@ const TagItem = (props: { const totalNotes = useTotalNotes("tag"); const totalNotesRef = React.useRef(totalNotes); totalNotesRef.current = totalNotes; + const updater = useRelationStore(state => state.updater); useEffect(() => { if (item?.id) { totalNotesRef.current?.getTotalNotes([item?.id]); } - }, [item]); + }, [item, updater]); return ( { alignItems: "center", alignSelf: "center", bottom: - Platform.OS === "android" - ? Math.max(insets.bottom, 40) - : Math.max(insets.bottom, 40) + - (keyboard.keyboardShown ? keyboard.keyboardHeight : 0), + insets.bottom + + 15 + + (keyboard.keyboardShown ? Math.max(0, keyboard.keyboardHeight) : 0), position: "absolute", zIndex: 999, elevation: 15 @@ -158,22 +157,22 @@ export const Toast = ({ context = "global" }) => { toastOptions.icon ? toastOptions.icon : toastOptions.type === "success" - ? "check" - : toastOptions.type === "info" - ? "information" - : "close" + ? "check" + : toastOptions.type === "info" + ? "information" + : "close" } size={isFullToastMessage ? AppFontSize.xxxl : AppFontSize.xl} color={ toastOptions?.icon ? toastOptions?.icon : toastOptions.type === "error" - ? colors.error.icon - : toastOptions.type === "info" - ? isDark - ? colors.static.white - : colors.static.black - : colors.success.icon + ? colors.error.icon + : toastOptions.type === "info" + ? isDark + ? colors.static.white + : colors.static.black + : colors.success.icon } /> diff --git a/apps/mobile/app/components/ui/sheet/index.jsx b/apps/mobile/app/components/ui/sheet/index.jsx index 273adf61b..49cbd2fb0 100644 --- a/apps/mobile/app/components/ui/sheet/index.jsx +++ b/apps/mobile/app/components/ui/sheet/index.jsx @@ -83,12 +83,13 @@ const SheetWrapper = ({ : 0 }; }, [ - colors.primary.background, - colors.primary.border, largeTablet, smallTablet, width, - insets.bottom + colors.primary.background, + colors.primary.border, + bottomInsets, + isGestureNavigationEnabled ]); const _onOpen = () => { diff --git a/apps/mobile/app/components/walkthroughs/walkthroughs.tsx b/apps/mobile/app/components/walkthroughs/walkthroughs.tsx index f42ba58e8..3dc6167e5 100644 --- a/apps/mobile/app/components/walkthroughs/walkthroughs.tsx +++ b/apps/mobile/app/components/walkthroughs/walkthroughs.tsx @@ -17,33 +17,14 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ +import { SubscriptionPlan } from "@notesnook/core"; import { strings } from "@notesnook/intl"; -import { useThemeColors } from "@notesnook/theme"; import React from "react"; -import { Linking, View } from "react-native"; -import Icon from "react-native-vector-icons/MaterialCommunityIcons"; -import { - COMMUNITY_SVG, - LAUNCH_ROCKET, - SUPPORT_SVG, - WELCOME_SVG -} from "../../assets/images/assets"; -import useRotator from "../../hooks/use-rotator"; -import { eSendEvent } from "../../services/event-manager"; -import { getContainerBorder } from "../../utils/colors"; -import { getElevationStyle } from "../../utils/elevation"; -import { eOpenAddNotebookDialog } from "../../utils/events"; -import { defaultBorderRadius, AppFontSize } from "../../utils/size"; -import { Button } from "../ui/button"; -import Seperator from "../ui/seperator"; -import { SvgView } from "../ui/svg"; -import Heading from "../ui/typography/heading"; -import Paragraph from "../ui/typography/paragraph"; -import { DefaultAppStyles } from "../../utils/styles"; +import { WELCOME_SVG } from "../../assets/images/assets"; import { useUserStore } from "../../stores/use-user-store"; -import { planToId, SubscriptionPlan } from "@notesnook/core"; import { planToDisplayName } from "../../utils/constants"; import AppIcon from "../ui/AppIcon"; +import { SvgView } from "../ui/svg"; export type TStep = { text?: string; diff --git a/apps/mobile/app/hooks/use-actions.tsx b/apps/mobile/app/hooks/use-actions.tsx index 237655388..5f6ca21d2 100644 --- a/apps/mobile/app/hooks/use-actions.tsx +++ b/apps/mobile/app/hooks/use-actions.tsx @@ -33,7 +33,7 @@ import { useThemeColors } from "@notesnook/theme"; import { DisplayedNotification } from "@notifee/react-native"; import Clipboard from "@react-native-clipboard/clipboard"; import React, { useEffect, useRef, useState } from "react"; -import { InteractionManager, Platform, View } from "react-native"; +import { InteractionManager, Platform } from "react-native"; import Share from "react-native-share"; import { DatabaseLogger, db } from "../common/database"; import { AttachmentDialog } from "../components/attachments"; @@ -72,8 +72,8 @@ import { useUserStore } from "../stores/use-user-store"; import { eCloseSheet, eUpdateNoteInEditor } from "../utils/events"; import { deleteItems } from "../utils/functions"; import { convertNoteToText } from "../utils/note-to-text"; -import { sleep } from "../utils/time"; import { NotesnookModule } from "../utils/notesnook-module"; +import { sleep } from "../utils/time"; import DatePickerComponent from "../components/date-picker"; @@ -198,7 +198,7 @@ export const useActions = ({ "expiringNotes" ]); const [item, setItem] = useState(propItem); - const { colors, isDark } = useThemeColors(); + const { colors } = useThemeColors(); const setMenuPins = useMenuStore((state) => state.setMenuPins); const [isPinnedToMenu, setIsPinnedToMenu] = useState( db.shortcuts.exists(item.id) @@ -384,6 +384,16 @@ export const useActions = ({ } const deleteItem = async () => { + if (isPublished) { + ToastManager.show({ + heading: strings.notePublished(), + message: strings.unpublishToDelete(), + type: "error", + context: "local" + }); + return; + } + close(); await sleep(300); @@ -1247,7 +1257,8 @@ export const useActions = ({ : strings.moveToTrash(), icon: "delete-outline", type: "error", - onPress: deleteItem + onPress: deleteItem, + locked: isPublished }); } @@ -1285,7 +1296,10 @@ export const useActions = ({ (item as Note).headline || (item as Notebook).description || "", (item as Color).colorCode ); - } catch (e) {} + } catch (e) { + /** + empty */ + } } }); } diff --git a/apps/mobile/app/hooks/use-app-events.tsx b/apps/mobile/app/hooks/use-app-events.tsx index 42f653ac9..f408788ec 100644 --- a/apps/mobile/app/hooks/use-app-events.tsx +++ b/apps/mobile/app/hooks/use-app-events.tsx @@ -366,7 +366,10 @@ async function checkForShareExtensionLaunchedInBackground() { if (note) setTimeout(() => eSendEvent("loadingNote", note), 1); MMKV.removeItem("shareExtensionOpened"); } - } catch (e) {} + } catch (e) { + /** + empty */ + } } const onSuccessfulSubscription = async ( diff --git a/apps/mobile/app/hooks/use-db-item.ts b/apps/mobile/app/hooks/use-db-item.ts index 3c44ca321..6b93a40b5 100644 --- a/apps/mobile/app/hooks/use-db-item.ts +++ b/apps/mobile/app/hooks/use-db-item.ts @@ -135,7 +135,7 @@ export const useNoteLocked = (noteId: string | undefined) => { //@ts-ignore !globalThis["IS_SHARE_EXTENSION"] ) { - let unsub = useSettingStore.subscribe((state) => { + const unsub = useSettingStore.subscribe((state) => { if (!state.isAppLoading) { unsub(); db.vaults diff --git a/apps/mobile/app/hooks/use-feature-manager.ts b/apps/mobile/app/hooks/use-feature-manager.ts index f173477fa..b9db4d6fb 100644 --- a/apps/mobile/app/hooks/use-feature-manager.ts +++ b/apps/mobile/app/hooks/use-feature-manager.ts @@ -1,15 +1,28 @@ +/* +This file is part of the Notesnook project (https://notesnook.com/) + +Copyright (C) 2023 Streetwriters (Private) Limited + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ import { useAreFeaturesAvailable } from "@notesnook/common"; -import { strings } from "@notesnook/intl"; import { useEffect } from "react"; import { db } from "../common/database"; -import { presentDialog } from "../components/dialog/functions"; import { useDragState } from "../screens/settings/editor/state"; -import { eSendEvent } from "../services/event-manager"; -import Navigation from "../services/navigation"; import Notifications from "../services/notifications"; import SettingsService from "../services/settings"; import { useUserStore } from "../stores/use-user-store"; -import { eCloseSimpleDialog } from "../utils/events"; export default function useFeatureManager() { const features = useAreFeaturesAvailable([ @@ -69,7 +82,7 @@ export default function useFeatureManager() { db.settings.setDefaultTag(undefined); } } - }, [features, plan]); + }, [features, plan, user]); return true; } diff --git a/apps/mobile/app/hooks/use-pricing-plans.ts b/apps/mobile/app/hooks/use-pricing-plans.ts index 72deaf64b..b52fe8e4b 100644 --- a/apps/mobile/app/hooks/use-pricing-plans.ts +++ b/apps/mobile/app/hooks/use-pricing-plans.ts @@ -255,12 +255,15 @@ const usePricingPlans = (options?: PricingPlansOptions) => { const products = WebPlanCache || (await db.pricing.products()); WebPlanCache = products; setWebPricingPlans(products); - } catch (e) {} + } catch (e) { + /** + empty */ + } } setLoadingPlans(false); }; loadPlans(); - }, [options?.promoOffer, cancelPromo]); + }, [options?.promoOffer, cancelPromo, hasTrialOffer]); function getLocalizedPrice( product: RNIap.Subscription | RNIap.Product | Plan @@ -276,8 +279,8 @@ const usePricingPlans = (options?: PricingPlansOptions) => { (product as Plan).period === "yearly" ? (product as Plan).price.gross : (product as Plan).period === "5-year" - ? (product as Plan).price.gross - : (product as Plan).price.gross + ? (product as Plan).price.gross + : (product as Plan).price.gross }`; } @@ -432,8 +435,8 @@ const usePricingPlans = (options?: PricingPlansOptions) => { return period.endsWith("W") ? "week" : period.endsWith("M") - ? "month" - : "year"; + ? "month" + : "year"; } else { const unit = (product as RNIap.SubscriptionIOS) ?.subscriptionPeriodUnitIOS; @@ -475,8 +478,8 @@ const usePricingPlans = (options?: PricingPlansOptions) => { type: phase.billingPeriod.endsWith("W") ? "week" : phase.billingPeriod.endsWith("M") - ? "month" - : "year" + ? "month" + : "year" }; } else { const productIos = product as RNIap.SubscriptionIOS; @@ -530,14 +533,15 @@ const usePricingPlans = (options?: PricingPlansOptions) => { const formattedPrice = numberWithCommas(monthlyPrice.toFixed(2)); return isAtLeft - ? `${symbol} ${formattedPrice}` - : `${formattedPrice} ${symbol}`; + ? `${symbol}${formattedPrice}` + : `${formattedPrice}${symbol}`; }; const getDiscountValue = (p1: string, p2: string, splitToMonth?: boolean) => { - let price1 = Platform.OS === "ios" ? parseInt(p1) : parseInt(p1) / 1000000; + let price1 = + Platform.OS === "ios" ? parseFloat(p1) : parseFloat(p1) / 1000000; const price2 = - Platform.OS === "ios" ? parseInt(p2) : parseInt(p2) / 1000000; + Platform.OS === "ios" ? parseFloat(p2) : parseFloat(p2) / 1000000; price1 = splitToMonth ? price1 / 12 : price1; @@ -587,7 +591,7 @@ const usePricingPlans = (options?: PricingPlansOptions) => { } else { priceValue = price / 1000000; } - const priceSymbol = localizedPrice.replace(/[\s\d,.]+/, ""); + const priceSymbol = localizedPrice.replace(/[\d,.]+/, ""); return { priceValue, priceSymbol, localizedPrice }; }; @@ -607,8 +611,8 @@ const usePricingPlans = (options?: PricingPlansOptions) => { (product as Plan).period === "yearly" ? ((product as Plan).price.gross / 12).toFixed(2) : (product as Plan).period === "5-year" - ? ((product as Plan).price.gross / (12 * 5)).toFixed(2) - : (product as Plan).price.gross + ? ((product as Plan).price.gross / (12 * 5)).toFixed(2) + : (product as Plan).price.gross }`; } diff --git a/apps/mobile/app/navigation/fluid-panels-view.tsx b/apps/mobile/app/navigation/fluid-panels-view.tsx index aebbd13a8..41eafeac7 100644 --- a/apps/mobile/app/navigation/fluid-panels-view.tsx +++ b/apps/mobile/app/navigation/fluid-panels-view.tsx @@ -139,7 +139,7 @@ export const FluidPanelsView = React.memo( if (deviceMode === "smallTablet") { fluidTabsRef.current?.openDrawer(false); } - }, [deviceMode, dimensions.width, setFullscreen]); + }, [deviceMode, setFullscreen]); const closeFullScreenEditor = useCallback( (current: string) => { @@ -158,7 +158,7 @@ export const FluidPanelsView = React.memo( fluidTabsRef.current?.goToIndex(2, false); } }, - [deviceMode, dimensions.width, setFullscreen] + [deviceMode, setFullscreen] ); const toggleView = useCallback( @@ -215,7 +215,7 @@ export const FluidPanelsView = React.memo( } }, 0); }, - [deviceMode, fullscreen, setDeviceModeState] + [fullscreen, setDeviceModeState] ); const checkDeviceType = React.useCallback( @@ -229,14 +229,14 @@ export const FluidPanelsView = React.memo( : "mobile"; setDeviceMode(nextDeviceMode, size); }, - [orientation, setDeviceMode, setDimensions] + [orientation, setDeviceMode] ); useEffect(() => { if (orientation !== "UNKNOWN") { checkDeviceType(dimensions); } - }, [orientation, dimensions]); + }, [orientation, dimensions, checkDeviceType]); const _onLayout = React.useCallback( (event: LayoutChangeEvent) => { @@ -251,13 +251,7 @@ export const FluidPanelsView = React.memo( setOrientation(OrientationType["PORTRAIT"]); } }, - [ - checkDeviceType, - deviceMode, - dimensions.width, - orientation, - setDeviceMode - ] + [setDimensions] ); const PANE_OFFSET = useMemo( diff --git a/apps/mobile/app/navigation/navigation-stack.tsx b/apps/mobile/app/navigation/navigation-stack.tsx index ffb89919b..c3a6ad4bf 100644 --- a/apps/mobile/app/navigation/navigation-stack.tsx +++ b/apps/mobile/app/navigation/navigation-stack.tsx @@ -16,7 +16,6 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ - import { useThemeColors } from "@notesnook/theme"; import { NavigationContainer } from "@react-navigation/native"; import { createNativeStackNavigator } from "@react-navigation/native-stack"; diff --git a/apps/mobile/app/screens/add-reminder/index.tsx b/apps/mobile/app/screens/add-reminder/index.tsx index a8c78d930..b88528f72 100644 --- a/apps/mobile/app/screens/add-reminder/index.tsx +++ b/apps/mobile/app/screens/add-reminder/index.tsx @@ -400,17 +400,45 @@ export default function AddReminder(props: NavigationProps<"AddReminder">) { recurringMode === RecurringModes.Year ? null : recurringMode === RecurringModes.Week - ? (weekFormat === "Mon" ? WeekDaysMon : WeekDays).map( - (item) => ( + ? (weekFormat === "Mon" ? WeekDaysMon : WeekDays).map( + (item) => ( + )} diff --git a/apps/web/src/components/navigation-menu/index.tsx b/apps/web/src/components/navigation-menu/index.tsx index 1c9f0ef7e..a90907727 100644 --- a/apps/web/src/components/navigation-menu/index.tsx +++ b/apps/web/src/components/navigation-menu/index.tsx @@ -48,7 +48,8 @@ import { Plus, SortBy, Tag as TagIcon, - InternalLink + InternalLink, + ClearTrash } from "../icons"; import { SortableNavigationItem } from "./navigation-item"; import { @@ -94,6 +95,8 @@ import { Color, createInternalLink, Notebook, Tag } from "@notesnook/core"; import { handleDrop } from "../../common/drop-handler"; import { Menu, useMenuStore, useMenuTrigger } from "../../hooks/use-menu"; import { RenameColorDialog } from "../../dialogs/item-dialog"; +import { ConfirmDialog } from "../../dialogs/confirm"; +import { showToast } from "../../utils/toast"; import { strings } from "@notesnook/intl"; import Tags from "../../views/tags"; import { Notebooks } from "../../views/notebooks"; @@ -517,6 +520,7 @@ function RouteItem({ context?: { isCollapsed: boolean; collapse: () => void }; }) { const [location] = useLocation(); + const trash = useTrashStore((store) => store.trash); return ( { + const ok = await ConfirmDialog.show({ + title: strings.clearTrash(), + positiveButtonText: strings.clear(), + negativeButtonText: strings.cancel(), + message: strings.clearTrashDesc() + }); + if (!ok) return; + + try { + await useTrashStore.getState().clear(); + showToast("success", strings.trashCleared()); + } catch (e) { + if (e instanceof Error) + showToast( + "error", + `${strings.couldNotClearTrash()} ${strings.error()}: ${ + e.message + }` + ); + } + } + } + ] + : []), { type: "lazy-loader", key: "sidebar-items-loader", diff --git a/apps/web/src/components/note/index.tsx b/apps/web/src/components/note/index.tsx index ee661f387..95c659fcd 100644 --- a/apps/web/src/components/note/index.tsx +++ b/apps/web/src/components/note/index.tsx @@ -21,7 +21,7 @@ import { NoteResolvedData, areFeaturesAvailable, exportContent, - getFormattedDate, + formatDate, getFormattedReminderTime } from "@notesnook/common"; import { @@ -56,6 +56,7 @@ import { store as selectionStore } from "../../stores/selection-store"; import { store as tagStore } from "../../stores/tag-store"; import { store as userstore } from "../../stores/user-store"; import { store as appStore } from "../../stores/app-store"; +import { useStore as useSettingStore } from "../../stores/setting-store"; import { writeToClipboard } from "../../utils/clipboard"; import { showToast } from "../../utils/toast"; import IconTag from "../icon-tag"; @@ -104,8 +105,6 @@ import ListItem from "../list-item"; import { PublishDialog } from "../publish-view"; import TimeAgo from "../time-ago"; import { NoteExpiryDateDialog } from "../../dialogs/note-expiry-date-dialog"; -import { withFeatureCheck } from "../../common"; -import { useSpellChecker } from "../../hooks/use-spell-checker"; type NoteProps = NoteResolvedData & { item: NoteType; @@ -131,6 +130,7 @@ function Note(props: NoteProps) { const isOpened = useEditorStore((store) => store.isNoteOpen(item.id)); const primary: SchemeColors = color ? color.colorCode : "accent-selected"; + const dateFormat = useSettingStore((store) => store.dateFormat); return ( - {getFormattedDate(date, "date")} + + {formatDate(date, { type: "date", dateFormat })} + } footer={ @@ -282,7 +284,10 @@ function Note(props: NoteProps) { {note.expiryDate?.value && ( )} diff --git a/apps/web/src/components/notebook-header.tsx b/apps/web/src/components/notebook-header.tsx index 0ed11ccba..be296c6e3 100644 --- a/apps/web/src/components/notebook-header.tsx +++ b/apps/web/src/components/notebook-header.tsx @@ -31,10 +31,10 @@ import { } from "./icons"; import { useStore as useNotebookStore } from "../stores/notebook-store"; import { db } from "../common/db"; -import { getFormattedDate } from "@notesnook/common"; +import { formatDate } from "@notesnook/common"; +import { useStore as useSettingStore } from "../stores/setting-store"; import { strings } from "@notesnook/intl"; import { Notebook } from "@notesnook/core"; -import { TITLE_BAR_HEIGHT } from "./title-bar"; import { Menu } from "../hooks/use-menu"; export function NotebookHeader(props: { @@ -49,6 +49,7 @@ export function NotebookHeader(props: { const [isShortcut, setIsShortcut] = useState(false); const shortcuts = useAppStore((store) => store.shortcuts); const addToShortcuts = useAppStore((store) => store.addToShortcuts); + const dateFormat = useSettingStore((store) => store.dateFormat); useEffect(() => { setIsShortcut(shortcuts.findIndex((p) => p.id === props.notebook.id) > -1); @@ -100,7 +101,9 @@ export function NotebookHeader(props: { {description && {description}} - {getFormattedDate(dateEdited, "date")} + + {formatDate(dateEdited, { type: "date", dateFormat })} + {strings.notes(totalNotes || 0)} diff --git a/apps/web/src/components/properties/index.tsx b/apps/web/src/components/properties/index.tsx index 65e46eca0..677e36eba 100644 --- a/apps/web/src/components/properties/index.tsx +++ b/apps/web/src/components/properties/index.tsx @@ -49,11 +49,12 @@ import Toggle from "./toggle"; import { EditNoteCreationDateDialog } from "../../dialogs/edit-note-creation-date-dialog"; import ScrollContainer from "../scroll-container"; import { - getFormattedDate, + formatDate, usePromise, ResolvedItem, useUnresolvedItem } from "@notesnook/common"; +import { useStore as useSettingStore } from "../../stores/setting-store"; import { ScopedThemeProvider } from "../theme-provider"; import { ListItemWrapper } from "../list-container/list-profiles"; import { VirtualizedList } from "../virtualized-list"; @@ -112,19 +113,6 @@ type MetadataItem = { value: (value: number) => string; }; -const metadataItems = [ - { - key: "dateCreated", - label: strings.createdAt(), - value: (date) => getFormattedDate(date || Date.now()) - } as MetadataItem<"dateCreated">, - { - key: "dateEdited", - label: strings.lastEditedAt(), - value: (date) => (date ? getFormattedDate(date) : "never") - } as MetadataItem<"dateEdited"> -]; - type EditorPropertiesProps = { sessionId: string; }; @@ -132,6 +120,28 @@ function EditorProperties(props: EditorPropertiesProps) { const toggleProperties = useEditorStore((store) => store.toggleProperties); useSpellChecker((store) => store.enabled); const isFocusMode = useAppStore((store) => store.isFocusMode); + const dateFormat = useSettingStore((store) => store.dateFormat); + const timeFormat = useSettingStore((store) => store.timeFormat); + const metadataItems = [ + { + key: "dateCreated", + label: strings.createdAt(), + value: (date: number) => + formatDate(date || Date.now(), { + type: "date-time", + dateFormat, + timeFormat + }) + } as MetadataItem<"dateCreated">, + { + key: "dateEdited", + label: strings.lastEditedAt(), + value: (date: number) => + date + ? formatDate(date, { type: "date-time", dateFormat, timeFormat }) + : "never" + } as MetadataItem<"dateEdited"> + ]; const session = useEditorStore((store) => store.getSession(props.sessionId, [ "default", diff --git a/apps/web/src/components/reminder/index.tsx b/apps/web/src/components/reminder/index.tsx index 128edb8ec..42ce209b0 100644 --- a/apps/web/src/components/reminder/index.tsx +++ b/apps/web/src/components/reminder/index.tsx @@ -32,12 +32,12 @@ import { Trash } from "../icons"; import IconTag from "../icon-tag"; -import { isReminderToday } from "@notesnook/core"; +import { isReminderToday, formatReminderTime } from "@notesnook/core"; import { hashNavigate } from "../../navigation"; import { Multiselect } from "../../common/multi-select"; import { store } from "../../stores/reminder-store"; import { db } from "../../common/db"; -import { getFormattedReminderTime } from "@notesnook/common"; +import { useStore as useSettingStore } from "../../stores/setting-store"; import { MenuItem } from "@notesnook/ui"; import { Reminder as ReminderType } from "@notesnook/core"; import { ConfirmDialog } from "../../dialogs/confirm"; @@ -67,6 +67,8 @@ function Reminder(props: ReminderProps) { const { item, compact } = props; const reminder = item as unknown as ReminderType; const PriorityIcon = PRIORITY_ICON_MAP[reminder.priority]; + const dateFormat = useSettingStore((store) => store.dateFormat); + const timeFormat = useSettingStore((store) => store.timeFormat); return ( diff --git a/apps/web/src/dialogs/add-reminder-dialog.tsx b/apps/web/src/dialogs/add-reminder-dialog.tsx index dbfa1b271..b90d52486 100644 --- a/apps/web/src/dialogs/add-reminder-dialog.tsx +++ b/apps/web/src/dialogs/add-reminder-dialog.tsx @@ -378,7 +378,17 @@ export const AddReminderDialog = DialogManager.register( ) : null} - + {mode === Modes.ONCE ? ( <> ) : recurringMode === RecurringModes.YEAR ? ( - <> + d.date(parseInt(day))); }} /> - + ) : null} ) : ( - {strings.reminderStarts(date.format(db.settings.getDateFormat()), date.format(timeFormat()))} + {strings.reminderStarts( + date.format(db.settings.getDateFormat()), + date.format(timeFormat()) + )} )} diff --git a/apps/web/src/views/trash.tsx b/apps/web/src/views/trash.tsx index a726edb65..3ea40da77 100644 --- a/apps/web/src/views/trash.tsx +++ b/apps/web/src/views/trash.tsx @@ -27,6 +27,7 @@ import { db } from "../common/db"; import { ListLoader } from "../components/loaders/list-loader"; import { ConfirmDialog } from "../dialogs/confirm"; import { strings } from "@notesnook/intl"; +import { ClearTrash } from "../components/icons"; function Trash() { useNavigate("trash", store.refresh); @@ -47,13 +48,13 @@ function Trash() { placeholder={} items={filteredItems || items} button={{ + Icon: ClearTrash, onClick: function () { ConfirmDialog.show({ title: strings.clearTrash(), - subtitle: strings.clearTrashDesc(), positiveButtonText: strings.clear(), negativeButtonText: strings.cancel(), - message: strings.areYouSure() + message: strings.clearTrashDesc() }).then(async (res) => { if (res) { try { diff --git a/packages/core/src/utils/templates/html/template.ts b/packages/core/src/utils/templates/html/template.ts index 6c4b75e99..fba73628f 100644 --- a/packages/core/src/utils/templates/html/template.ts +++ b/packages/core/src/utils/templates/html/template.ts @@ -19,6 +19,7 @@ along with this program. If not, see . import { TemplateData } from "../index.js"; import { formatDate } from "../../date.js"; +import { escapeUTF8 } from "entities"; export function template(data: TemplateData) { return ` @@ -28,19 +29,23 @@ export function template(data: TemplateData) { - ${data.title} + ${escapeUTF8(data.title)} ${data.pinned ? `` : ""} ${ data.favorite ? `` : "" } - ${data.color ? `` : ""} + ${ + data.color + ? `` + : "" + } ${ data.tags && data.tags.length - ? `` + ? `` : "" } @@ -207,7 +212,7 @@ export function template(data: TemplateData) { -

${data.title}

+

${escapeUTF8(data.title)}

${data.content} diff --git a/packages/intl/locale/en.po b/packages/intl/locale/en.po index 896269e30..2b553b34d 100644 --- a/packages/intl/locale/en.po +++ b/packages/intl/locale/en.po @@ -13,7 +13,7 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: src/strings.ts:2412 +#: src/strings.ts:2413 msgid " \"Notebook > Notes\"" msgstr " \"Notebook > Notes\"" @@ -68,6 +68,11 @@ msgstr "{0} downloaded" msgid "{0} Highlights 🎉" msgstr "{0} Highlights 🎉" +#. placeholder {0}: platform === "ios" ? "Apple" : "Google" +#: src/strings.ts:2569 +msgid "{0} will remind you before your trial ends" +msgstr "{0} will remind you before your trial ends" + #: src/strings.ts:1755 msgid "{count, plural, one {# error occured} other {# errors occured}}" msgstr "{count, plural, one {# error occured} other {# errors occured}}" @@ -288,7 +293,7 @@ msgstr "{count, plural, one {Item restored} other {# items restored}}" msgid "{count, plural, one {Item unpublished} other {# items unpublished}}" msgstr "{count, plural, one {Item unpublished} other {# items unpublished}}" -#: src/strings.ts:2429 +#: src/strings.ts:2430 msgid "{count, plural, one {Move all notes in this notebook to trash} other {Move all notes in these notebooks to trash}}" msgstr "{count, plural, one {Move all notes in this notebook to trash} other {Move all notes in these notebooks to trash}}" @@ -491,7 +496,7 @@ msgstr "{count, plural, one {Unpublish item} other {Unpublish # items}}" msgid "{count, plural, one {Unpublish note} other {Unpublish # notes}}" msgstr "{count, plural, one {Unpublish note} other {Unpublish # notes}}" -#: src/strings.ts:2499 +#: src/strings.ts:2500 msgid "{count} characters" msgstr "{count} characters" @@ -499,7 +504,7 @@ msgstr "{count} characters" msgid "{days, plural, one {1 day} other {# days}}" msgstr "{days, plural, one {1 day} other {# days}}" -#: src/strings.ts:2559 +#: src/strings.ts:2560 msgid "{days} days free" msgstr "{days} days free" @@ -563,7 +568,7 @@ msgstr "{notes, plural, one {Export note} other {Export # notes}}" msgid "{percentage}% updating..." msgstr "{percentage}% updating..." -#: src/strings.ts:2543 +#: src/strings.ts:2544 msgid "{plan} plan" msgstr "{plan} plan" @@ -575,7 +580,7 @@ msgstr "{platform, select, android {{name} saved to selected path} other {{name} msgid "{platform, select, android {Backup file saved in \"Notesnook backups\" folder on your phone.} other {Backup file is saved in File Manager/Notesnook folder}}" msgstr "{platform, select, android {Backup file saved in \"Notesnook backups\" folder on your phone.} other {Backup file is saved in File Manager/Notesnook folder}}" -#: src/strings.ts:2359 +#: src/strings.ts:2360 msgid "{selected} selected" msgstr "{selected} selected" @@ -607,19 +612,19 @@ msgstr "{words, plural, other {# selected}}" msgid "#notesnook" msgstr "#notesnook" -#: src/strings.ts:2665 +#: src/strings.ts:2669 msgid "1 day" msgstr "1 day" -#: src/strings.ts:2667 +#: src/strings.ts:2671 msgid "1 month" msgstr "1 month" -#: src/strings.ts:2666 +#: src/strings.ts:2670 msgid "1 week" msgstr "1 week" -#: src/strings.ts:2668 +#: src/strings.ts:2672 msgid "1 year" msgstr "1 year" @@ -639,7 +644,7 @@ msgstr "2FA code is required()" msgid "2FA code sent via {method}" msgstr "2FA code sent via {method}" -#: src/strings.ts:2583 +#: src/strings.ts:2587 msgid "5 year plan (One time purchase)" msgstr "5 year plan (One time purchase)" @@ -675,15 +680,15 @@ msgstr "Account" msgid "Account password" msgstr "Account password" -#: src/strings.ts:2454 +#: src/strings.ts:2455 msgid "Actions for note: {title}" msgstr "Actions for note: {title}" -#: src/strings.ts:2455 +#: src/strings.ts:2456 msgid "Actions for notebook: {title}" msgstr "Actions for notebook: {title}" -#: src/strings.ts:2456 +#: src/strings.ts:2457 msgid "Actions for tag: {title}" msgstr "Actions for tag: {title}" @@ -715,7 +720,7 @@ msgstr "Add a tag" msgid "Add color" msgstr "Add color" -#: src/strings.ts:2653 +#: src/strings.ts:2657 msgid "Add key" msgstr "Add key" @@ -723,7 +728,7 @@ msgstr "Add key" msgid "Add notebook" msgstr "Add notebook" -#: src/strings.ts:2481 +#: src/strings.ts:2482 msgid "Add notes" msgstr "Add notes" @@ -751,15 +756,15 @@ msgstr "Add tags" msgid "Add tags to multiple notes at once" msgstr "Add tags to multiple notes at once" -#: src/strings.ts:2246 +#: src/strings.ts:2247 msgid "Add to dictionary" msgstr "Add to dictionary" -#: src/strings.ts:2616 +#: src/strings.ts:2620 msgid "Add to home" msgstr "Add to home" -#: src/strings.ts:2479 +#: src/strings.ts:2480 msgid "Add to notebook" msgstr "Add to notebook" @@ -771,7 +776,7 @@ msgstr "Add your first note" msgid "Add your first notebook" msgstr "Add your first notebook" -#: src/strings.ts:2619 +#: src/strings.ts:2623 msgid "Adjust the line height of the editor" msgstr "Adjust the line height of the editor" @@ -783,15 +788,15 @@ msgstr "Advanced" msgid "After scanning the QR code image, the app will display a code that you can enter below." msgstr "After scanning the QR code image, the app will display a code that you can enter below." -#: src/strings.ts:2311 +#: src/strings.ts:2312 msgid "Align left" msgstr "Align left" -#: src/strings.ts:2312 +#: src/strings.ts:2313 msgid "Align right" msgstr "Align right" -#: src/strings.ts:2281 +#: src/strings.ts:2282 msgid "Alignment" msgstr "Alignment" @@ -803,7 +808,7 @@ msgstr "All" msgid "All attachments are end-to-end encrypted." msgstr "All attachments are end-to-end encrypted." -#: src/strings.ts:2406 +#: src/strings.ts:2407 msgid "All cached attachments have been cleared." msgstr "All cached attachments have been cleared." @@ -863,7 +868,7 @@ msgstr "Amount" msgid "An error occurred while migrating your data. You can logout of your account and try to relogin. However this is not recommended as it may result in some data loss if your data was not synced." msgstr "An error occurred while migrating your data. You can logout of your account and try to relogin. However this is not recommended as it may result in some data loss if your data was not synced." -#: src/strings.ts:2577 +#: src/strings.ts:2581 msgid "and" msgstr "and" @@ -875,7 +880,7 @@ msgstr "and " msgid "and get a chance to win free promo codes." msgstr "and get a chance to win free promo codes." -#: src/strings.ts:2536 +#: src/strings.ts:2537 msgid "and much more." msgstr "and much more." @@ -883,27 +888,27 @@ msgstr "and much more." msgid "and we will manually confirm your account." msgstr "and we will manually confirm your account." -#: src/strings.ts:2594 +#: src/strings.ts:2598 msgid "ANNOUNCEMENT" msgstr "ANNOUNCEMENT" -#: src/strings.ts:2683 +#: src/strings.ts:2687 msgid "API key copied to clipboard" msgstr "API key copied to clipboard" -#: src/strings.ts:2661 +#: src/strings.ts:2665 msgid "API key created successfully" msgstr "API key created successfully" -#: src/strings.ts:2688 +#: src/strings.ts:2692 msgid "API key revoked" msgstr "API key revoked" -#: src/strings.ts:2654 +#: src/strings.ts:2658 msgid "API Keys" msgstr "API Keys" -#: src/strings.ts:2675 +#: src/strings.ts:2679 msgid "API Keys Limit Reached" msgstr "API Keys Limit Reached" @@ -954,7 +959,7 @@ msgid "Applying changes" msgstr "Applying changes" #: src/strings.ts:1532 -#: src/strings.ts:2486 +#: src/strings.ts:2487 msgid "Archive" msgstr "Archive" @@ -986,7 +991,7 @@ msgstr "Are you sure you want to remove your name?" msgid "Are you sure you want to remove your profile picture?" msgstr "Are you sure you want to remove your profile picture?" -#: src/strings.ts:2687 +#: src/strings.ts:2691 msgid "Are you sure you want to revoke the key \"{name}\"? All inbox actions using this key will stop working immediately." msgstr "Are you sure you want to revoke the key \"{name}\"? All inbox actions using this key will stop working immediately." @@ -1010,7 +1015,7 @@ msgstr "Assign to..." msgid "Atleast 8 characters required" msgstr "Atleast 8 characters required" -#: src/strings.ts:2348 +#: src/strings.ts:2349 msgid "Attach image from URL" msgstr "Attach image from URL" @@ -1023,11 +1028,11 @@ msgid "attachment" msgstr "attachment" #: src/strings.ts:300 -#: src/strings.ts:2345 +#: src/strings.ts:2346 msgid "Attachment" msgstr "Attachment" -#: src/strings.ts:2449 +#: src/strings.ts:2450 msgid "Attachment manager" msgstr "Attachment manager" @@ -1035,11 +1040,11 @@ msgstr "Attachment manager" msgid "Attachment preview failed" msgstr "Attachment preview failed" -#: src/strings.ts:2399 +#: src/strings.ts:2400 msgid "Attachment recheck cancelled" msgstr "Attachment recheck cancelled" -#: src/strings.ts:2316 +#: src/strings.ts:2317 msgid "Attachment settings" msgstr "Attachment settings" @@ -1056,7 +1061,7 @@ msgstr "Attachments" msgid "Attachments cache cleared!" msgstr "Attachments cache cleared!" -#: src/strings.ts:2401 +#: src/strings.ts:2402 msgid "Attachments recheck complete" msgstr "Attachments recheck complete" @@ -1068,11 +1073,11 @@ msgstr "Audios" msgid "Auth server" msgstr "Auth server" -#: src/strings.ts:2681 +#: src/strings.ts:2685 msgid "Authenticate" msgstr "Authenticate" -#: src/strings.ts:2678 +#: src/strings.ts:2682 msgid "Authenticate to view API key" msgstr "Authenticate to view API key" @@ -1157,11 +1162,11 @@ msgstr "Available on iOS" msgid "Available on iOS & Android" msgstr "Available on iOS & Android" -#: src/strings.ts:2706 +#: src/strings.ts:2710 msgid "Back" msgstr "Back" -#: src/strings.ts:2304 +#: src/strings.ts:2305 msgid "Background color" msgstr "Background color" @@ -1249,27 +1254,27 @@ msgstr "Behavior" msgid "Behaviour" msgstr "Behaviour" -#: src/strings.ts:2473 +#: src/strings.ts:2474 msgid "Believer plan" msgstr "Believer plan" -#: src/strings.ts:2580 +#: src/strings.ts:2584 msgid "Best value" msgstr "Best value" -#: src/strings.ts:2462 +#: src/strings.ts:2463 msgid "Beta" msgstr "Beta" -#: src/strings.ts:2262 +#: src/strings.ts:2263 msgid "Bi-directional note link" msgstr "Bi-directional note link" -#: src/strings.ts:2556 +#: src/strings.ts:2557 msgid "billed annually at {price}" msgstr "billed annually at {price}" -#: src/strings.ts:2557 +#: src/strings.ts:2558 msgid "billed monthly at {price}" msgstr "billed monthly at {price}" @@ -1297,11 +1302,11 @@ msgstr "Biometrics authentication failed. Please try again." msgid "Biometrics not enrolled" msgstr "Biometrics not enrolled" -#: src/strings.ts:2258 +#: src/strings.ts:2259 msgid "Bold" msgstr "Bold" -#: src/strings.ts:2411 +#: src/strings.ts:2412 msgid "Boost your productivity with Notebooks and organize your notes." msgstr "Boost your productivity with Notebooks and organize your notes." @@ -1309,7 +1314,7 @@ msgstr "Boost your productivity with Notebooks and organize your notes." msgid "Browse" msgstr "Browse" -#: src/strings.ts:2275 +#: src/strings.ts:2276 msgid "Bullet list" msgstr "Bullet list" @@ -1317,7 +1322,7 @@ msgstr "Bullet list" msgid "By" msgstr "By" -#: src/strings.ts:2575 +#: src/strings.ts:2579 msgid "By joining you agree to our" msgstr "By joining you agree to our" @@ -1325,11 +1330,11 @@ msgstr "By joining you agree to our" msgid "By signing up, you agree to our " msgstr "By signing up, you agree to our " -#: src/strings.ts:2336 +#: src/strings.ts:2337 msgid "Callout" msgstr "Callout" -#: src/strings.ts:2516 +#: src/strings.ts:2517 msgid "Can I cancel my free trial anytime?" msgstr "Can I cancel my free trial anytime?" @@ -1337,11 +1342,11 @@ msgstr "Can I cancel my free trial anytime?" msgid "Cancel" msgstr "Cancel" -#: src/strings.ts:2573 +#: src/strings.ts:2577 msgid "Cancel anytime, subscription auto-renews." msgstr "Cancel anytime, subscription auto-renews." -#: src/strings.ts:2538 +#: src/strings.ts:2539 msgid "Cancel anytime." msgstr "Cancel anytime." @@ -1361,28 +1366,28 @@ msgstr "Cancel subscription" msgid "Cancel upload" msgstr "Cancel upload" -#: src/strings.ts:2677 +#: src/strings.ts:2681 msgid "Cannot create more than 10 api keys at a time. Please revoke some existing keys before creating new ones." msgstr "Cannot create more than 10 api keys at a time. Please revoke some existing keys before creating new ones." -#: src/strings.ts:2303 +#: src/strings.ts:2304 msgid "Cell background color" msgstr "Cell background color" -#: src/strings.ts:2305 +#: src/strings.ts:2306 msgid "Cell border color" msgstr "Cell border color" -#: src/strings.ts:2307 #: src/strings.ts:2308 +#: src/strings.ts:2309 msgid "Cell border width" msgstr "Cell border width" -#: src/strings.ts:2289 +#: src/strings.ts:2290 msgid "Cell properties" msgstr "Cell properties" -#: src/strings.ts:2306 +#: src/strings.ts:2307 msgid "Cell text color" msgstr "Cell text color" @@ -1418,7 +1423,7 @@ msgstr "Change email address" msgid "Change how the app behaves in different situations" msgstr "Change how the app behaves in different situations" -#: src/strings.ts:2354 +#: src/strings.ts:2355 msgid "Change language" msgstr "Change language" @@ -1430,7 +1435,7 @@ msgstr "Change notification sound" msgid "Change password" msgstr "Change password" -#: src/strings.ts:2587 +#: src/strings.ts:2591 msgid "Change plan" msgstr "Change plan" @@ -1466,7 +1471,7 @@ msgstr "Change your primary two-factor authentication method" msgid "Changes from other devices won't be updated in the editor in real-time." msgstr "Changes from other devices won't be updated in the editor in real-time." -#: src/strings.ts:2697 +#: src/strings.ts:2701 msgid "Changing Inbox PGP keys will delete all your unsynced inbox items." msgstr "Changing Inbox PGP keys will delete all your unsynced inbox items." @@ -1474,7 +1479,7 @@ msgstr "Changing Inbox PGP keys will delete all your unsynced inbox items." msgid "Changing password is an irreversible process. You will be logged out from all your devices. Please make sure you do not close the app while your password is changing and have good internet connection." msgstr "Changing password is an irreversible process. You will be logged out from all your devices. Please make sure you do not close the app while your password is changing and have good internet connection." -#: src/strings.ts:2492 +#: src/strings.ts:2493 msgid "Characters" msgstr "Characters" @@ -1502,7 +1507,7 @@ msgstr "Check roadmap" msgid "Check your spam folder if you haven't received an email yet." msgstr "Check your spam folder if you haven't received an email yet." -#: src/strings.ts:2403 +#: src/strings.ts:2404 msgid "Checking all attachments" msgstr "Checking all attachments" @@ -1514,15 +1519,15 @@ msgstr "Checking for new version" msgid "Checking for updates" msgstr "Checking for updates" -#: src/strings.ts:2402 +#: src/strings.ts:2403 msgid "Checking note attachments" msgstr "Checking note attachments" -#: src/strings.ts:2277 +#: src/strings.ts:2278 msgid "Checklist" msgstr "Checklist" -#: src/strings.ts:2331 +#: src/strings.ts:2332 msgid "Choose a block to insert" msgstr "Choose a block to insert" @@ -1534,7 +1539,7 @@ msgstr "Choose a recovery method" msgid "Choose backup format" msgstr "Choose backup format" -#: src/strings.ts:2367 +#: src/strings.ts:2368 msgid "Choose custom color" msgstr "Choose custom color" @@ -1546,7 +1551,7 @@ msgstr "Choose from pre-built themes or create your own" msgid "Choose how dates are displayed in the app" msgstr "Choose how dates are displayed in the app" -#: src/strings.ts:2622 +#: src/strings.ts:2626 msgid "Choose how day is displayed in the app" msgstr "Choose how day is displayed in the app" @@ -1562,7 +1567,7 @@ msgstr "Choose how time is displayed in the app" msgid "Choose how you want to secure your notes locally." msgstr "Choose how you want to secure your notes locally." -#: src/strings.ts:2627 +#: src/strings.ts:2631 msgid "Choose what day to display as the first day of the week" msgstr "Choose what day to display as the first day of the week" @@ -1586,7 +1591,7 @@ msgstr "Clear" msgid "Clear all cached attachments. Current cache size: {cacheSize}" msgstr "Clear all cached attachments. Current cache size: {cacheSize}" -#: src/strings.ts:2271 +#: src/strings.ts:2272 msgid "Clear all formatting" msgstr "Clear all formatting" @@ -1598,7 +1603,7 @@ msgstr "Clear attachments cache?" msgid "Clear cache" msgstr "Clear cache" -#: src/strings.ts:2365 +#: src/strings.ts:2366 msgid "Clear completed tasks" msgstr "Clear completed tasks" @@ -1656,7 +1661,11 @@ msgstr "" "\n" "**Only use this for troubleshooting purposes. If you are having persistent issues, it is recommended that you reach out to us via support@streetwriters.co so we can help you resolve it permanently.**" -#: src/strings.ts:2609 +#: src/strings.ts:2231 +msgid "Clearing trash will permanently delete all the items in your trash. This action is IRREVERSIBLE." +msgstr "Clearing trash will permanently delete all the items in your trash. This action is IRREVERSIBLE." + +#: src/strings.ts:2613 msgid "Click here to directly claim the promotion." msgstr "Click here to directly claim the promotion." @@ -1672,15 +1681,15 @@ msgstr "Click to preview" msgid "Click to remove" msgstr "Click to remove" -#: src/strings.ts:2394 +#: src/strings.ts:2395 msgid "Click to reset {title}" msgstr "Click to reset {title}" -#: src/strings.ts:2617 +#: src/strings.ts:2621 msgid "Click to save" msgstr "Click to save" -#: src/strings.ts:2613 +#: src/strings.ts:2617 msgid "Click to update" msgstr "Click to update" @@ -1692,11 +1701,11 @@ msgstr "Close" msgid "Close all" msgstr "Close all" -#: src/strings.ts:2452 +#: src/strings.ts:2453 msgid "Close all tabs" msgstr "Close all tabs" -#: src/strings.ts:2451 +#: src/strings.ts:2452 msgid "Close current tab" msgstr "Close current tab" @@ -1716,19 +1725,19 @@ msgstr "Close to the left" msgid "Close to the right" msgstr "Close to the right" -#: src/strings.ts:2530 +#: src/strings.ts:2531 msgid "cloud storage space for storing images and files." msgstr "cloud storage space for storing images and files." -#: src/strings.ts:2269 +#: src/strings.ts:2270 msgid "Code" msgstr "Code" -#: src/strings.ts:2333 +#: src/strings.ts:2334 msgid "Code block" msgstr "Code block" -#: src/strings.ts:2270 +#: src/strings.ts:2271 msgid "Code remove" msgstr "Code remove" @@ -1765,11 +1774,11 @@ msgstr "colors" msgid "Colors" msgstr "Colors" -#: src/strings.ts:2287 +#: src/strings.ts:2288 msgid "Column properties" msgstr "Column properties" -#: src/strings.ts:2443 +#: src/strings.ts:2444 msgid "Command palette" msgstr "Command palette" @@ -1777,7 +1786,7 @@ msgstr "Command palette" msgid "Community" msgstr "Community" -#: src/strings.ts:2550 +#: src/strings.ts:2551 msgid "Compare plans" msgstr "Compare plans" @@ -1797,11 +1806,11 @@ msgstr "Compress images before uploading" msgid "Compressed images are uploaded in Full HD resolution and usually are good enough for most use cases." msgstr "Compressed images are uploaded in Full HD resolution and usually are good enough for most use cases." -#: src/strings.ts:2253 +#: src/strings.ts:2254 msgid "Configure" msgstr "Configure" -#: src/strings.ts:2408 +#: src/strings.ts:2409 msgid "Configure server URLs for Notesnook" msgstr "Configure server URLs for Notesnook" @@ -1825,7 +1834,7 @@ msgstr "Confirm password" msgid "Confirm pin" msgstr "Confirm pin" -#: src/strings.ts:2641 +#: src/strings.ts:2645 msgid "Confirmation email sent" msgstr "Confirmation email sent" @@ -1878,7 +1887,7 @@ msgstr "Copy codes" msgid "Copy ID" msgstr "Copy ID" -#: src/strings.ts:2249 +#: src/strings.ts:2250 msgid "Copy image" msgstr "Copy image" @@ -1886,7 +1895,7 @@ msgstr "Copy image" msgid "Copy link" msgstr "Copy link" -#: src/strings.ts:2248 +#: src/strings.ts:2249 msgid "Copy link text" msgstr "Copy link text" @@ -1958,11 +1967,11 @@ msgstr "Create a tag to group related notes together." msgid "Create account" msgstr "Create account" -#: src/strings.ts:2656 +#: src/strings.ts:2660 msgid "Create API Key" msgstr "Create API Key" -#: src/strings.ts:2673 +#: src/strings.ts:2677 msgid "Create Key" msgstr "Create Key" @@ -1994,15 +2003,15 @@ msgstr "Create vault" msgid "Create your account" msgstr "Create your account" -#: src/strings.ts:2672 +#: src/strings.ts:2676 msgid "Create your first api key to get started." msgstr "Create your first api key to get started." -#: src/strings.ts:2231 +#: src/strings.ts:2232 msgid "Created at" msgstr "Created at" -#: src/strings.ts:2692 +#: src/strings.ts:2696 msgid "Created on" msgstr "Created on" @@ -2011,7 +2020,7 @@ msgstr "Created on" msgid "Creating a{0} backup" msgstr "Creating a{0} backup" -#: src/strings.ts:2664 +#: src/strings.ts:2668 msgid "Creating..." msgstr "Creating..." @@ -2075,7 +2084,7 @@ msgstr "Customize the toolbar in the note editor" msgid "Customize toolbar" msgstr "Customize toolbar" -#: src/strings.ts:2247 +#: src/strings.ts:2248 msgid "Cut" msgstr "Cut" @@ -2136,7 +2145,7 @@ msgstr "Date uploaded" msgid "Day" msgstr "Day" -#: src/strings.ts:2621 +#: src/strings.ts:2625 msgid "Day format" msgstr "Day format" @@ -2160,7 +2169,7 @@ msgstr "Debug logs downloaded" msgid "Debugging" msgstr "Debugging" -#: src/strings.ts:2396 +#: src/strings.ts:2397 msgid "Decrease {title}" msgstr "Decrease {title}" @@ -2193,7 +2202,7 @@ msgstr "Default notebook cleared" msgid "Default screen to open on app launch" msgstr "Default screen to open on app launch" -#: src/strings.ts:2483 +#: src/strings.ts:2484 msgid "Default sidebar tab" msgstr "Default sidebar tab" @@ -2217,11 +2226,11 @@ msgstr "Delete account" msgid "Delete collapsed section" msgstr "Delete collapsed section" -#: src/strings.ts:2294 +#: src/strings.ts:2295 msgid "Delete column" msgstr "Delete column" -#: src/strings.ts:2638 +#: src/strings.ts:2642 msgid "Delete data" msgstr "Delete data" @@ -2229,7 +2238,7 @@ msgstr "Delete data" msgid "Delete group" msgstr "Delete group" -#: src/strings.ts:2368 +#: src/strings.ts:2369 msgid "Delete mode" msgstr "Delete mode" @@ -2241,11 +2250,11 @@ msgstr "Delete notes in this vault" msgid "Delete permanently" msgstr "Delete permanently" -#: src/strings.ts:2301 +#: src/strings.ts:2302 msgid "Delete row" msgstr "Delete row" -#: src/strings.ts:2302 +#: src/strings.ts:2303 msgid "Delete table" msgstr "Delete table" @@ -2293,7 +2302,7 @@ msgstr "Disable auto sync" msgid "Disable editor margins" msgstr "Disable editor margins" -#: src/strings.ts:2650 +#: src/strings.ts:2654 msgid "Disable Inbox API" msgstr "Disable Inbox API" @@ -2309,7 +2318,7 @@ msgstr "Disable sync" msgid "Disabled" msgstr "Disabled" -#: src/strings.ts:2652 +#: src/strings.ts:2656 msgid "Disabling will delete all your unsynced inbox items. Additionally, disabling will revoke all existing API keys, they will no longer work. Are you sure?" msgstr "Disabling will delete all your unsynced inbox items. Additionally, disabling will revoke all existing API keys, they will no longer work. Are you sure?" @@ -2333,10 +2342,6 @@ msgstr "Disputed" msgid "Do you enjoy using Notesnook?" msgstr "Do you enjoy using Notesnook?" -#: src/strings.ts:2230 -msgid "Do you want to clear the trash?" -msgstr "Do you want to clear the trash?" - #: src/strings.ts:1265 msgid "Documentation" msgstr "Documentation" @@ -2397,7 +2402,7 @@ msgstr "Download" msgid "Download all attachments" msgstr "Download all attachments" -#: src/strings.ts:2317 +#: src/strings.ts:2318 msgid "Download attachment" msgstr "Download attachment" @@ -2462,7 +2467,7 @@ msgstr "Drop the files here" msgid "Drop your files here to attach" msgstr "Drop your files here to attach" -#: src/strings.ts:2560 +#: src/strings.ts:2561 msgid "Due {date}" msgstr "Due {date}" @@ -2470,7 +2475,7 @@ msgstr "Due {date}" msgid "Due date" msgstr "Due date" -#: src/strings.ts:2558 +#: src/strings.ts:2559 msgid "Due today" msgstr "Due today" @@ -2478,7 +2483,7 @@ msgstr "Due today" msgid "Duplicate" msgstr "Duplicate" -#: src/strings.ts:2658 +#: src/strings.ts:2662 msgid "e.g., Todo integration" msgstr "e.g., Todo integration" @@ -2486,7 +2491,7 @@ msgstr "e.g., Todo integration" msgid "Earliest first" msgstr "Earliest first" -#: src/strings.ts:2420 +#: src/strings.ts:2421 msgid "Easy access" msgstr "Easy access" @@ -2494,7 +2499,7 @@ msgstr "Easy access" msgid "Edit" msgstr "Edit" -#: src/strings.ts:2628 +#: src/strings.ts:2632 msgid "Edit creation date" msgstr "Edit creation date" @@ -2502,12 +2507,12 @@ msgstr "Edit creation date" msgid "Edit internal link" msgstr "Edit internal link" -#: src/strings.ts:2236 -#: src/strings.ts:2264 +#: src/strings.ts:2237 +#: src/strings.ts:2265 msgid "Edit link" msgstr "Edit link" -#: src/strings.ts:2476 +#: src/strings.ts:2477 msgid "Edit profile" msgstr "Edit profile" @@ -2524,7 +2529,7 @@ msgstr "Edit your full name" msgid "Editor" msgstr "Editor" -#: src/strings.ts:2584 +#: src/strings.ts:2588 msgid "Education plan" msgstr "Education plan" @@ -2532,7 +2537,7 @@ msgstr "Education plan" msgid "Email" msgstr "Email" -#: src/strings.ts:2433 +#: src/strings.ts:2434 msgid "Email copied" msgstr "Email copied" @@ -2556,15 +2561,15 @@ msgstr "Email support" msgid "Email updated to {email}" msgstr "Email updated to {email}" -#: src/strings.ts:2343 +#: src/strings.ts:2344 msgid "Embed" msgstr "Embed" -#: src/strings.ts:2323 +#: src/strings.ts:2324 msgid "Embed properties" msgstr "Embed properties" -#: src/strings.ts:2319 +#: src/strings.ts:2320 msgid "Embed settings" msgstr "Embed settings" @@ -2584,15 +2589,15 @@ msgstr "Enable app lock" msgid "Enable editor margins" msgstr "Enable editor margins" -#: src/strings.ts:2645 +#: src/strings.ts:2649 msgid "Enable Inbox API" msgstr "Enable Inbox API" -#: src/strings.ts:2467 +#: src/strings.ts:2468 msgid "Enable ligatures for common symbols like →, ←, etc" msgstr "Enable ligatures for common symbols like →, ←, etc" -#: src/strings.ts:2383 +#: src/strings.ts:2384 msgid "Enable regex" msgstr "Enable regex" @@ -2604,7 +2609,7 @@ msgstr "Enable spell checker" msgid "Enable two-factor authentication to add an extra layer of security to your account." msgstr "Enable two-factor authentication to add an extra layer of security to your account." -#: src/strings.ts:2646 +#: src/strings.ts:2650 msgid "Enable/Disable Inbox API" msgstr "Enable/Disable Inbox API" @@ -2616,7 +2621,7 @@ msgstr "Encrypt your backups for added security" msgid "Encrypted and synced" msgstr "Encrypted and synced" -#: src/strings.ts:2243 +#: src/strings.ts:2244 msgid "Encrypted backup" msgstr "Encrypted backup" @@ -2668,7 +2673,7 @@ msgstr "Enter code from authenticator app" msgid "Enter email address" msgstr "Enter email address" -#: src/strings.ts:2371 +#: src/strings.ts:2372 msgid "Enter embed source URL" msgstr "Enter embed source URL" @@ -2712,7 +2717,7 @@ msgstr "Enter the 6 digit code sent to your email to continue logging in" msgid "Enter the 6 digit code sent to your phone number to continue logging in" msgstr "Enter the 6 digit code sent to your phone number to continue logging in" -#: src/strings.ts:2435 +#: src/strings.ts:2436 msgid "Enter the gift code to redeem your subscription." msgstr "Enter the gift code to redeem your subscription." @@ -2720,7 +2725,7 @@ msgstr "Enter the gift code to redeem your subscription." msgid "Enter the recovery code to continue logging in" msgstr "Enter the recovery code to continue logging in" -#: src/strings.ts:2620 +#: src/strings.ts:2624 msgid "Enter title" msgstr "Enter title" @@ -2736,7 +2741,7 @@ msgstr "Enter your new email" msgid "Enter your username" msgstr "Enter your username" -#: src/strings.ts:2427 +#: src/strings.ts:2428 msgid "Error" msgstr "Error" @@ -2772,7 +2777,7 @@ msgstr "Errors" msgid "Errors in {count} attachments" msgstr "Errors in {count} attachments" -#: src/strings.ts:2472 +#: src/strings.ts:2473 msgid "Essential plan" msgstr "Essential plan" @@ -2780,23 +2785,23 @@ msgstr "Essential plan" msgid "Events server" msgstr "Events server" -#: src/strings.ts:2413 +#: src/strings.ts:2414 msgid "Every Notebook can have notes and sub notebooks." msgstr "Every Notebook can have notes and sub notebooks." -#: src/strings.ts:2415 +#: src/strings.ts:2416 msgid "Everything related to my job in one place." msgstr "Everything related to my job in one place." -#: src/strings.ts:2424 +#: src/strings.ts:2425 msgid "Everything related to my school in one place." msgstr "Everything related to my school in one place." -#: src/strings.ts:2441 +#: src/strings.ts:2442 msgid "Execute" msgstr "Execute" -#: src/strings.ts:2440 +#: src/strings.ts:2441 msgid "Execute a command..." msgstr "Execute a command..." @@ -2804,11 +2809,11 @@ msgstr "Execute a command..." msgid "Exit fullscreen" msgstr "Exit fullscreen" -#: src/strings.ts:2375 +#: src/strings.ts:2376 msgid "Expand" msgstr "Expand" -#: src/strings.ts:2468 +#: src/strings.ts:2469 msgid "Expand sidebar" msgstr "Expand sidebar" @@ -2816,23 +2821,23 @@ msgstr "Expand sidebar" msgid "Experience the next level of private note taking\"" msgstr "Experience the next level of private note taking\"" -#: src/strings.ts:2694 +#: src/strings.ts:2698 msgid "Expired" msgstr "Expired" -#: src/strings.ts:2659 +#: src/strings.ts:2663 msgid "Expires in" msgstr "Expires in" -#: src/strings.ts:2695 +#: src/strings.ts:2699 msgid "Expires on" msgstr "Expires on" -#: src/strings.ts:2634 +#: src/strings.ts:2638 msgid "Expiry date" msgstr "Expiry date" -#: src/strings.ts:2541 +#: src/strings.ts:2542 msgid "Explore all plans" msgstr "Explore all plans" @@ -2857,7 +2862,7 @@ msgstr "Export all notes as pdf, markdown, html or text in a single zip file" msgid "Export as{0}" msgstr "Export as{0}" -#: src/strings.ts:2635 +#: src/strings.ts:2639 msgid "Export CSV" msgstr "Export CSV" @@ -2881,11 +2886,11 @@ msgstr "EXTREMELY DANGEROUS! This action is irreversible. All your data includin msgid "Faced an issue or have a suggestion? Click here to create a bug report" msgstr "Faced an issue or have a suggestion? Click here to create a bug report" -#: src/strings.ts:2405 +#: src/strings.ts:2406 msgid "Failed" msgstr "Failed" -#: src/strings.ts:2639 +#: src/strings.ts:2643 msgid "Failed to attach file" msgstr "Failed to attach file" @@ -2893,12 +2898,12 @@ msgstr "Failed to attach file" msgid "Failed to copy note" msgstr "Failed to copy note" -#: src/strings.ts:2684 +#: src/strings.ts:2688 msgid "Failed to copy to clipboard" msgstr "Failed to copy to clipboard" #. placeholder {0}: message ? `: ${message}` : "" -#: src/strings.ts:2663 +#: src/strings.ts:2667 msgid "Failed to create API key{0}" msgstr "Failed to create API key{0}" @@ -2922,7 +2927,7 @@ msgstr "Failed to download file" msgid "Failed to install theme." msgstr "Failed to install theme." -#: src/strings.ts:2670 +#: src/strings.ts:2674 msgid "Failed to load API keys. Please try again." msgstr "Failed to load API keys. Please try again." @@ -2942,7 +2947,7 @@ msgstr "Failed to register task" msgid "Failed to resolve download url" msgstr "Failed to resolve download url" -#: src/strings.ts:2689 +#: src/strings.ts:2693 msgid "Failed to revoke API key" msgstr "Failed to revoke API key" @@ -2978,7 +2983,7 @@ msgstr "Failed to zip files" msgid "Fallback method for 2FA enabled" msgstr "Fallback method for 2FA enabled" -#: src/strings.ts:2551 +#: src/strings.ts:2552 msgid "FAQs" msgstr "FAQs" @@ -2991,15 +2996,15 @@ msgstr "Favorite" msgid "Favorites" msgstr "Favorites" -#: src/strings.ts:2549 +#: src/strings.ts:2550 msgid "Featured on" msgstr "Featured on" -#: src/strings.ts:2417 +#: src/strings.ts:2418 msgid "February 2022 Week 2" msgstr "February 2022 Week 2" -#: src/strings.ts:2418 +#: src/strings.ts:2419 msgid "February 2022 Week 3" msgstr "February 2022 Week 3" @@ -3039,7 +3044,7 @@ msgstr "Filter attachments by filename, type or hash" msgid "Filter languages" msgstr "Filter languages" -#: src/strings.ts:2606 +#: src/strings.ts:2610 msgid "Finish your purchase in the browser." msgstr "Finish your purchase in the browser." @@ -3071,19 +3076,19 @@ msgstr "Follow us on X" msgid "Follow us on X for updates and news about Notesnook" msgstr "Follow us on X for updates and news about Notesnook" -#: src/strings.ts:2278 +#: src/strings.ts:2279 msgid "Font family" msgstr "Font family" -#: src/strings.ts:2465 +#: src/strings.ts:2466 msgid "Font ligatures" msgstr "Font ligatures" -#: src/strings.ts:2279 +#: src/strings.ts:2280 msgid "Font size" msgstr "Font size" -#: src/strings.ts:2523 +#: src/strings.ts:2524 msgid "For a monthly subscription, you can get a refund within 7 days of purchase. For a yearly subscription, we offer a full refund within 14 days of purchase. For a 5 year subscription, you can request a refund within 30 days of purchase." msgstr "For a monthly subscription, you can get a refund within 7 days of purchase. For a yearly subscription, we offer a full refund within 14 days of purchase. For a 5 year subscription, you can request a refund within 30 days of purchase." @@ -3095,7 +3100,7 @@ msgstr "For a more integrated user experience, try out Notesnook for {platform}" msgid "for help regarding how to use the Notesnook Importer." msgstr "for help regarding how to use the Notesnook Importer." -#: src/strings.ts:2532 +#: src/strings.ts:2533 msgid "for locking your notes as soon as app enters background" msgstr "for locking your notes as soon as app enters background" @@ -3133,11 +3138,11 @@ msgstr "" msgid "Forgot password?" msgstr "Forgot password?" -#: src/strings.ts:2566 +#: src/strings.ts:2567 msgid "Free {duration} day trial, cancel any time" msgstr "Free {duration} day trial, cancel any time" -#: src/strings.ts:2470 +#: src/strings.ts:2471 msgid "Free plan" msgstr "Free plan" @@ -3149,11 +3154,11 @@ msgstr "Fri" msgid "Friday" msgstr "Friday" -#: src/strings.ts:2373 +#: src/strings.ts:2374 msgid "From code" msgstr "From code" -#: src/strings.ts:2370 +#: src/strings.ts:2371 msgid "From URL" msgstr "From URL" @@ -3165,7 +3170,7 @@ msgstr "Full name updated" msgid "Full offline mode" msgstr "Full offline mode" -#: src/strings.ts:2325 +#: src/strings.ts:2326 msgid "Full screen" msgstr "Full screen" @@ -3197,7 +3202,7 @@ msgstr "Get Notesnook Pro" msgid "Get Notesnook Pro to enable automatic backups" msgstr "Get Notesnook Pro to enable automatic backups" -#: src/strings.ts:2409 +#: src/strings.ts:2410 msgid "Get Priority support" msgstr "Get Priority support" @@ -3209,7 +3214,7 @@ msgstr "Get Pro" msgid "Get started" msgstr "Get started" -#: src/strings.ts:2529 +#: src/strings.ts:2530 msgid "Get this and so much more:" msgstr "Get this and so much more:" @@ -3229,11 +3234,11 @@ msgstr "Getting recovery codes" msgid "GNU GENERAL PUBLIC LICENSE Version 3" msgstr "GNU GENERAL PUBLIC LICENSE Version 3" -#: src/strings.ts:2607 +#: src/strings.ts:2611 msgid "Go back" msgstr "Go back" -#: src/strings.ts:2448 +#: src/strings.ts:2449 msgid "Go back in tab" msgstr "Go back in tab" @@ -3245,7 +3250,7 @@ msgstr "Go back to notebooks" msgid "Go back to tags" msgstr "Go back to tags" -#: src/strings.ts:2447 +#: src/strings.ts:2448 msgid "Go forward in tab" msgstr "Go forward in tab" @@ -3269,14 +3274,10 @@ msgstr "Go to previous page" msgid "Go to web app" msgstr "Go to web app" -#: src/strings.ts:2540 +#: src/strings.ts:2541 msgid "Google will remind you 2 days before your trial ends." msgstr "Google will remind you 2 days before your trial ends." -#: src/strings.ts:2567 -msgid "Google will remind you before your trial ends" -msgstr "Google will remind you before your trial ends" - #: src/strings.ts:586 msgid "Got it" msgstr "Got it" @@ -3301,19 +3302,19 @@ msgstr "Hash copied" msgid "Having problems with sync?" msgstr "Having problems with sync?" -#: src/strings.ts:2555 +#: src/strings.ts:2556 msgid "hdImages" msgstr "hdImages" -#: src/strings.ts:2351 +#: src/strings.ts:2352 msgid "Heading {level}" msgstr "Heading {level}" -#: src/strings.ts:2280 +#: src/strings.ts:2281 msgid "Headings" msgstr "Headings" -#: src/strings.ts:2386 +#: src/strings.ts:2387 msgid "Height" msgstr "Height" @@ -3337,7 +3338,7 @@ msgstr "Hide app contents when you switch to other apps. This will also disable msgid "Hide note title" msgstr "Hide note title" -#: src/strings.ts:2283 +#: src/strings.ts:2284 msgid "Highlight" msgstr "Highlight" @@ -3357,7 +3358,7 @@ msgstr "Homepage" msgid "Homepage changed to {name}" msgstr "Homepage changed to {name}" -#: src/strings.ts:2332 +#: src/strings.ts:2333 msgid "Horizontal rule" msgstr "Horizontal rule" @@ -3373,7 +3374,7 @@ msgstr "How to fix it?" msgid "hr" msgstr "hr" -#: src/strings.ts:2500 +#: src/strings.ts:2501 msgid "I already have an account" msgstr "I already have an account" @@ -3401,7 +3402,7 @@ msgstr "I have a recovery code" msgid "I have saved my key" msgstr "I have saved my key" -#: src/strings.ts:2426 +#: src/strings.ts:2427 msgid "I love cooking and collecting recipes." msgstr "I love cooking and collecting recipes." @@ -3457,7 +3458,7 @@ msgstr "If you face any issue, you can reach out to us anytime." msgid "If you want to ask something in general or need some assistance, we would suggest that you" msgstr "If you want to ask something in general or need some assistance, we would suggest that you" -#: src/strings.ts:2337 +#: src/strings.ts:2338 msgid "Image" msgstr "Image" @@ -3465,11 +3466,11 @@ msgstr "Image" msgid "Image Compression" msgstr "Image Compression" -#: src/strings.ts:2313 +#: src/strings.ts:2314 msgid "Image properties" msgstr "Image properties" -#: src/strings.ts:2309 +#: src/strings.ts:2310 msgid "Image settings" msgstr "Image settings" @@ -3497,7 +3498,7 @@ msgstr "Import & export" msgid "Import completed" msgstr "Import completed" -#: src/strings.ts:2636 +#: src/strings.ts:2640 msgid "Import CSV" msgstr "Import CSV" @@ -3505,15 +3506,15 @@ msgstr "Import CSV" msgid "import guide" msgstr "import guide" -#: src/strings.ts:2642 +#: src/strings.ts:2646 msgid "Inbox API" msgstr "Inbox API" -#: src/strings.ts:2647 +#: src/strings.ts:2651 msgid "Inbox Keys" msgstr "Inbox Keys" -#: src/strings.ts:2702 +#: src/strings.ts:2706 msgid "Inbox keys saved" msgstr "Inbox keys saved" @@ -3529,47 +3530,47 @@ msgstr "Incoming note" msgid "Incorrect {type}" msgstr "Incorrect {type}" -#: src/strings.ts:2395 +#: src/strings.ts:2396 msgid "Increase {title}" msgstr "Increase {title}" -#: src/strings.ts:2237 +#: src/strings.ts:2238 msgid "Insert" msgstr "Insert" -#: src/strings.ts:2392 +#: src/strings.ts:2393 msgid "Insert a {rows}x{columns} table" msgstr "Insert a {rows}x{columns} table" -#: src/strings.ts:2342 +#: src/strings.ts:2343 msgid "Insert a table" msgstr "Insert a table" -#: src/strings.ts:2344 +#: src/strings.ts:2345 msgid "Insert an embed" msgstr "Insert an embed" -#: src/strings.ts:2338 +#: src/strings.ts:2339 msgid "Insert an image" msgstr "Insert an image" -#: src/strings.ts:2290 +#: src/strings.ts:2291 msgid "Insert column left" msgstr "Insert column left" -#: src/strings.ts:2291 +#: src/strings.ts:2292 msgid "Insert column right" msgstr "Insert column right" -#: src/strings.ts:2235 +#: src/strings.ts:2236 msgid "Insert link" msgstr "Insert link" -#: src/strings.ts:2297 +#: src/strings.ts:2298 msgid "Insert row above" msgstr "Insert row above" -#: src/strings.ts:2298 +#: src/strings.ts:2299 msgid "Insert row below" msgstr "Insert row below" @@ -3597,15 +3598,15 @@ msgstr "Invalid CORS proxy url" msgid "Invalid email" msgstr "Invalid email" -#: src/strings.ts:2682 +#: src/strings.ts:2686 msgid "Invalid password" msgstr "Invalid password" -#: src/strings.ts:2701 +#: src/strings.ts:2705 msgid "Invalid PGP key pair. Please check your keys and try again." msgstr "Invalid PGP key pair. Please check your keys and try again." -#: src/strings.ts:2708 +#: src/strings.ts:2712 msgid "Invalid recovery key. Make sure to input your account recovery key, not a 2FA recovery code." msgstr "Invalid recovery key. Make sure to input your account recovery key, not a 2FA recovery code." @@ -3626,7 +3627,7 @@ msgstr "It seems that your changes could not be saved. What to do next:" msgid "It took us a year to bring Notesnook to life. Share your experience and suggestions to help us improve it." msgstr "It took us a year to bring Notesnook to life. Share your experience and suggestions to help us improve it." -#: src/strings.ts:2259 +#: src/strings.ts:2260 msgid "Italic" msgstr "Italic" @@ -3691,7 +3692,7 @@ msgstr "Keep open" msgid "Keep your data safe" msgstr "Keep your data safe" -#: src/strings.ts:2657 +#: src/strings.ts:2661 msgid "Key name" msgstr "Key name" @@ -3699,11 +3700,11 @@ msgstr "Key name" msgid "Languages" msgstr "Languages" -#: src/strings.ts:2232 +#: src/strings.ts:2233 msgid "Last edited at" msgstr "Last edited at" -#: src/strings.ts:2690 +#: src/strings.ts:2694 msgid "Last used on" msgstr "Last used on" @@ -3751,7 +3752,7 @@ msgstr "License" msgid "Licensed under {license}" msgstr "Licensed under {license}" -#: src/strings.ts:2328 +#: src/strings.ts:2329 msgid "Lift list item" msgstr "Lift list item" @@ -3759,11 +3760,11 @@ msgstr "Lift list item" msgid "Light" msgstr "Light" -#: src/strings.ts:2358 +#: src/strings.ts:2359 msgid "Line {line}, Column {column}" msgstr "Line {line}, Column {column}" -#: src/strings.ts:2618 +#: src/strings.ts:2622 msgid "Line height" msgstr "Line height" @@ -3771,7 +3772,7 @@ msgstr "Line height" msgid "Line spacing changed" msgstr "Line spacing changed" -#: src/strings.ts:2263 +#: src/strings.ts:2264 msgid "Link" msgstr "Link" @@ -3783,15 +3784,15 @@ msgstr "Link copied" msgid "Link notebooks" msgstr "Link notebooks" -#: src/strings.ts:2477 +#: src/strings.ts:2478 msgid "Link notes" msgstr "Link notes" -#: src/strings.ts:2268 +#: src/strings.ts:2269 msgid "Link settings" msgstr "Link settings" -#: src/strings.ts:2388 +#: src/strings.ts:2389 msgid "Link text" msgstr "Link text" @@ -3832,7 +3833,7 @@ msgstr "Loading" msgid "Loading {0}, please wait..." msgstr "Loading {0}, please wait..." -#: src/strings.ts:2669 +#: src/strings.ts:2673 msgid "Loading API keys..." msgstr "Loading API keys..." @@ -3892,7 +3893,7 @@ msgstr "Lock note" msgid "Lock the app with a password or pin" msgstr "Lock the app with a password or pin" -#: src/strings.ts:2703 +#: src/strings.ts:2707 msgid "Lock vault after" msgstr "Lock vault after" @@ -3944,7 +3945,7 @@ msgstr "Login successful" msgid "Login to encrypt and sync notes" msgstr "Login to encrypt and sync notes" -#: src/strings.ts:2611 +#: src/strings.ts:2615 msgid "Login to upload attachments. [Read more](https://help.notesnook.com/faqs/login-to-upload-attachments)" msgstr "Login to upload attachments. [Read more](https://help.notesnook.com/faqs/login-to-upload-attachments)" @@ -3968,7 +3969,7 @@ msgstr "Logout from this device" msgid "Long press on any item in list to enter multi-select mode." msgstr "Long press on any item in list to enter multi-select mode." -#: src/strings.ts:2363 +#: src/strings.ts:2364 msgid "Make task list readonly" msgstr "Make task list readonly" @@ -4020,19 +4021,19 @@ msgstr "Markdown shortcuts" msgid "Marketing emails" msgstr "Marketing emails" -#: src/strings.ts:2376 +#: src/strings.ts:2377 msgid "Match case" msgstr "Match case" -#: src/strings.ts:2377 +#: src/strings.ts:2378 msgid "Match whole word" msgstr "Match whole word" -#: src/strings.ts:2285 +#: src/strings.ts:2286 msgid "Math (inline)" msgstr "Math (inline)" -#: src/strings.ts:2335 +#: src/strings.ts:2336 msgid "Math & formulas" msgstr "Math & formulas" @@ -4044,7 +4045,7 @@ msgstr "Maximize" msgid "Meet other privacy-minded people & talk to us directly about your concerns, issues and suggestions." msgstr "Meet other privacy-minded people & talk to us directly about your concerns, issues and suggestions." -#: src/strings.ts:2419 +#: src/strings.ts:2420 msgid "Meetings" msgstr "Meetings" @@ -4052,7 +4053,7 @@ msgstr "Meetings" msgid "Member since {date}" msgstr "Member since {date}" -#: src/strings.ts:2296 +#: src/strings.ts:2297 msgid "Merge cells" msgstr "Merge cells" @@ -4116,11 +4117,8 @@ msgstr "Monographs can be encrypted with a secret key and shared with anyone." msgid "Monographs enable you to share your notes in a secure and private way." msgstr "Monographs enable you to share your notes in a secure and private way." -#: src/strings.ts:1842 -msgid "month" -msgstr "month" - #: src/strings.ts:665 +#: src/strings.ts:1842 msgid "Month" msgstr "Month" @@ -4129,7 +4127,7 @@ msgstr "Month" msgid "Monthly" msgstr "Monthly" -#: src/strings.ts:2315 +#: src/strings.ts:2316 msgid "More" msgstr "More" @@ -4141,15 +4139,15 @@ msgstr "Most relevant first" msgid "Move" msgstr "Move" -#: src/strings.ts:2364 +#: src/strings.ts:2365 msgid "Move all checked tasks to bottom" msgstr "Move all checked tasks to bottom" -#: src/strings.ts:2292 +#: src/strings.ts:2293 msgid "Move column left" msgstr "Move column left" -#: src/strings.ts:2293 +#: src/strings.ts:2294 msgid "Move column right" msgstr "Move column right" @@ -4161,11 +4159,11 @@ msgstr "Move notebook" msgid "Move notes" msgstr "Move notes" -#: src/strings.ts:2300 +#: src/strings.ts:2301 msgid "Move row down" msgstr "Move row down" -#: src/strings.ts:2299 +#: src/strings.ts:2300 msgid "Move row up" msgstr "Move row up" @@ -4193,7 +4191,7 @@ msgstr "Name" msgid "Native high-performance encryption" msgstr "Native high-performance encryption" -#: src/strings.ts:2444 +#: src/strings.ts:2445 msgid "Navigate" msgstr "Navigate" @@ -4205,7 +4203,7 @@ msgstr "Never" msgid "Never ask again" msgstr "Never ask again" -#: src/strings.ts:2693 +#: src/strings.ts:2697 msgid "Never expires" msgstr "Never expires" @@ -4217,7 +4215,7 @@ msgstr "Never hesitate to choose privacy" msgid "Never show again" msgstr "Never show again" -#: src/strings.ts:2691 +#: src/strings.ts:2695 msgid "Never used" msgstr "Never used" @@ -4261,7 +4259,7 @@ msgstr "New reminder" msgid "New tab" msgstr "New tab" -#: src/strings.ts:2450 +#: src/strings.ts:2451 msgid "New tag" msgstr "New tag" @@ -4285,11 +4283,11 @@ msgstr "Newly created notes will be uncategorized" msgid "Next" msgstr "Next" -#: src/strings.ts:2380 +#: src/strings.ts:2381 msgid "Next match" msgstr "Next match" -#: src/strings.ts:2445 +#: src/strings.ts:2446 msgid "Next tab" msgstr "Next tab" @@ -4345,7 +4343,7 @@ msgstr "No links found" msgid "No note history available for this device." msgstr "No note history available for this device." -#: src/strings.ts:2494 +#: src/strings.ts:2495 msgid "No notebooks selected to move" msgstr "No notebooks selected to move" @@ -4353,7 +4351,7 @@ msgstr "No notebooks selected to move" msgid "No one can view this {type} except you." msgstr "No one can view this {type} except you." -#: src/strings.ts:2614 +#: src/strings.ts:2618 msgid "No password" msgstr "No password" @@ -4447,7 +4445,7 @@ msgstr "notebook" msgid "Notebook" msgstr "Notebook" -#: src/strings.ts:2480 +#: src/strings.ts:2481 msgid "Notebook added" msgstr "Notebook added" @@ -4465,7 +4463,7 @@ msgstr "Notebooks" msgid "NOTEBOOKS" msgstr "NOTEBOOKS" -#: src/strings.ts:2242 +#: src/strings.ts:2243 msgid "Notebooks are the best way to organize your notes." msgstr "Notebooks are the best way to organize your notes." @@ -4486,15 +4484,15 @@ msgstr "Notes exported as {path} successfully" msgid "notes imported" msgstr "notes imported" -#: src/strings.ts:2544 +#: src/strings.ts:2545 msgid "Notesnook" msgstr "Notesnook" -#: src/strings.ts:2599 +#: src/strings.ts:2603 msgid "Notesnook Circle" msgstr "Notesnook Circle" -#: src/strings.ts:2601 +#: src/strings.ts:2605 msgid "Notesnook Circle brings together trusted partners who share our commitment to privacy, transparency, and user freedom." msgstr "Notesnook Circle brings together trusted partners who share our commitment to privacy, transparency, and user freedom." @@ -4542,7 +4540,7 @@ msgstr "Notifications" msgid "Notifications disabled" msgstr "Notifications disabled" -#: src/strings.ts:2276 +#: src/strings.ts:2277 msgid "Numbered list" msgstr "Numbered list" @@ -4558,7 +4556,7 @@ msgstr "Off" msgid "Offline" msgstr "Offline" -#: src/strings.ts:2674 +#: src/strings.ts:2678 msgid "OK" msgstr "OK" @@ -4586,7 +4584,7 @@ msgstr "Oldest - newest" msgid "Once your password is changed, please make sure to save the new account recovery key" msgstr "Once your password is changed, please make sure to save the new account recovery key" -#: src/strings.ts:2562 +#: src/strings.ts:2563 msgid "One time purchase, no auto-renewal" msgstr "One time purchase, no auto-renewal" @@ -4610,7 +4608,7 @@ msgstr "Open in browser" msgid "Open in browser to manage subscription" msgstr "Open in browser to manage subscription" -#: src/strings.ts:2326 +#: src/strings.ts:2327 msgid "Open in new tab" msgstr "Open in new tab" @@ -4618,7 +4616,7 @@ msgstr "Open in new tab" msgid "Open issue" msgstr "Open issue" -#: src/strings.ts:2266 +#: src/strings.ts:2267 msgid "Open link" msgstr "Open link" @@ -4630,7 +4628,7 @@ msgstr "Open note" msgid "Open settings" msgstr "Open settings" -#: src/strings.ts:2327 +#: src/strings.ts:2328 msgid "Open source" msgstr "Open source" @@ -4675,15 +4673,15 @@ msgstr "Orphaned" msgid "Other" msgstr "Other" -#: src/strings.ts:2347 +#: src/strings.ts:2348 msgid "Outline list" msgstr "Outline list" -#: src/strings.ts:2350 +#: src/strings.ts:2351 msgid "Paragraph" msgstr "Paragraph" -#: src/strings.ts:2493 +#: src/strings.ts:2494 msgid "Paragraphs" msgstr "Paragraphs" @@ -4695,7 +4693,7 @@ msgstr "Partial backups contain all your data except attachments. They are creat msgid "Partially refunded" msgstr "Partially refunded" -#: src/strings.ts:2404 +#: src/strings.ts:2405 msgid "Passed" msgstr "Passed" @@ -4735,27 +4733,27 @@ msgstr "Password updated" msgid "Password/pin" msgstr "Password/pin" -#: src/strings.ts:2250 +#: src/strings.ts:2251 msgid "Paste" msgstr "Paste" -#: src/strings.ts:2251 +#: src/strings.ts:2252 msgid "Paste and match style" msgstr "Paste and match style" -#: src/strings.ts:2372 +#: src/strings.ts:2373 msgid "Paste embed code here. Only iframes are supported." msgstr "Paste embed code here. Only iframes are supported." -#: src/strings.ts:2387 +#: src/strings.ts:2388 msgid "Paste image URL here" msgstr "Paste image URL here" -#: src/strings.ts:2252 +#: src/strings.ts:2253 msgid "Paste without formatting" msgstr "Paste without formatting" -#: src/strings.ts:2563 +#: src/strings.ts:2564 msgid "Pay once and use for 5 years" msgstr "Pay once and use for 5 years" @@ -4795,11 +4793,11 @@ msgstr "Pin notification" msgid "Pinned" msgstr "Pinned" -#: src/strings.ts:2581 +#: src/strings.ts:2585 msgid "Plan limits" msgstr "Plan limits" -#: src/strings.ts:2544 +#: src/strings.ts:2545 msgid "Plans" msgstr "Plans" @@ -4812,7 +4810,7 @@ msgid "Please confirm your identity by entering a recovery code." msgstr "Please confirm your identity by entering a recovery code." #: src/strings.ts:983 -#: src/strings.ts:2234 +#: src/strings.ts:2235 msgid "Please confirm your identity by entering the authentication code from your authenticator app." msgstr "Please confirm your identity by entering the authentication code from your authenticator app." @@ -4833,7 +4831,7 @@ msgstr "Please download a backup of your data as your account will be cleared be msgid "Please enable automatic backups to avoid losing important data." msgstr "Please enable automatic backups to avoid losing important data." -#: src/strings.ts:2660 +#: src/strings.ts:2664 msgid "Please enter a key name" msgstr "Please enter a key name" @@ -4857,7 +4855,7 @@ msgstr "Please enter a valid URL" msgid "Please enter password of this backup file" msgstr "Please enter password of this backup file" -#: src/strings.ts:2245 +#: src/strings.ts:2246 msgid "Please enter the password to decrypt and restore this backup." msgstr "Please enter the password to decrypt and restore this backup." @@ -4873,7 +4871,7 @@ msgstr "Please enter the password to unlock this note" msgid "Please enter the password to view this version" msgstr "Please enter the password to view this version" -#: src/strings.ts:2680 +#: src/strings.ts:2684 msgid "Please enter your account password to view this API key." msgstr "Please enter your account password to view this API key." @@ -4921,7 +4919,7 @@ msgstr "Please select the day to repeat the reminder on" msgid "please send us an email from your registered email address" msgstr "please send us an email from your registered email address" -#: src/strings.ts:2393 +#: src/strings.ts:2394 msgid "Please set a table size" msgstr "Please set a table size" @@ -5027,7 +5025,7 @@ msgstr "Pressing \"X\" will hide the app in your system tray." msgid "Prevent note title from appearing in tab/window title." msgstr "Prevent note title from appearing in tab/window title." -#: src/strings.ts:2314 +#: src/strings.ts:2315 msgid "Preview attachment" msgstr "Preview attachment" @@ -5035,11 +5033,11 @@ msgstr "Preview attachment" msgid "Preview not available, content is encrypted." msgstr "Preview not available, content is encrypted." -#: src/strings.ts:2381 +#: src/strings.ts:2382 msgid "Previous match" msgstr "Previous match" -#: src/strings.ts:2446 +#: src/strings.ts:2447 msgid "Previous tab" msgstr "Previous tab" @@ -5067,7 +5065,7 @@ msgstr "Privacy for everyone" msgid "Privacy mode" msgstr "Privacy mode" -#: src/strings.ts:2576 +#: src/strings.ts:2580 msgid "privacy policy" msgstr "privacy policy" @@ -5083,7 +5081,7 @@ msgstr "Privacy Policy. " msgid "private analytics and bug reports." msgstr "private analytics and bug reports." -#: src/strings.ts:2699 +#: src/strings.ts:2703 msgid "Private Key:" msgstr "Private Key:" @@ -5099,7 +5097,7 @@ msgstr "privileged few" msgid "Pro" msgstr "Pro" -#: src/strings.ts:2471 +#: src/strings.ts:2472 msgid "Pro plan" msgstr "Pro plan" @@ -5135,7 +5133,7 @@ msgstr "Protect your notes" msgid "Proxy" msgstr "Proxy" -#: src/strings.ts:2698 +#: src/strings.ts:2702 msgid "Public Key:" msgstr "Public Key:" @@ -5147,7 +5145,7 @@ msgstr "Publish" msgid "Publish note" msgstr "Publish note" -#: src/strings.ts:2615 +#: src/strings.ts:2619 msgid "Publish to the web" msgstr "Publish to the web" @@ -5171,7 +5169,7 @@ msgstr "Published note can only be viewed by someone with the password." msgid "Published note link will be automatically deleted once it is viewed by someone." msgstr "Published note link will be automatically deleted once it is viewed by someone." -#: src/strings.ts:2569 +#: src/strings.ts:2573 msgid "Purchase" msgstr "Purchase" @@ -5187,7 +5185,7 @@ msgstr "Quick note notification" msgid "Quick note widgets" msgstr "Quick note widgets" -#: src/strings.ts:2442 +#: src/strings.ts:2443 msgid "Quick open" msgstr "Quick open" @@ -5195,7 +5193,7 @@ msgstr "Quick open" msgid "Quickly create a note from the notification" msgstr "Quickly create a note from the notification" -#: src/strings.ts:2334 +#: src/strings.ts:2335 msgid "Quote" msgstr "Quote" @@ -5235,7 +5233,7 @@ msgstr "Read the terms of service" msgid "Reading backup file..." msgstr "Reading backup file..." -#: src/strings.ts:2546 +#: src/strings.ts:2547 msgid "Ready to take the next step on your private note taking journey?" msgstr "Ready to take the next step on your private note taking journey?" @@ -5247,11 +5245,11 @@ msgstr "Receipt" msgid "RECENT BACKUPS" msgstr "RECENT BACKUPS" -#: src/strings.ts:2457 +#: src/strings.ts:2458 msgid "Recents" msgstr "Recents" -#: src/strings.ts:2400 +#: src/strings.ts:2401 msgid "Recheck all" msgstr "Recheck all" @@ -5259,7 +5257,7 @@ msgstr "Recheck all" msgid "Rechecking failed" msgstr "Rechecking failed" -#: src/strings.ts:2425 +#: src/strings.ts:2426 msgid "Recipes" msgstr "Recipes" @@ -5267,7 +5265,7 @@ msgstr "Recipes" msgid "Recommended" msgstr "Recommended" -#: src/strings.ts:2548 +#: src/strings.ts:2549 msgid "Recommended by Privacy Guides" msgstr "Recommended by Privacy Guides" @@ -5307,19 +5305,19 @@ msgstr "Recovery key text file saved" msgid "Recovery successful!" msgstr "Recovery successful!" -#: src/strings.ts:2437 +#: src/strings.ts:2438 msgid "Redeem" msgstr "Redeem" -#: src/strings.ts:2598 +#: src/strings.ts:2602 msgid "Redeem code" msgstr "Redeem code" -#: src/strings.ts:2434 +#: src/strings.ts:2435 msgid "Redeem gift code" msgstr "Redeem gift code" -#: src/strings.ts:2436 +#: src/strings.ts:2437 msgid "Redeeming gift code" msgstr "Redeeming gift code" @@ -5347,7 +5345,7 @@ msgstr "Register" msgid "Release notes" msgstr "Release notes" -#: src/strings.ts:2459 +#: src/strings.ts:2460 msgid "Release track" msgstr "Release track" @@ -5441,7 +5439,7 @@ msgstr "Remove app lock pin, app lock will be disabled if no other security meth msgid "Remove as default" msgstr "Remove as default" -#: src/strings.ts:2318 +#: src/strings.ts:2319 msgid "Remove attachment" msgstr "Remove attachment" @@ -5453,7 +5451,7 @@ msgstr "Remove from all" msgid "Remove from notebook" msgstr "Remove from notebook" -#: src/strings.ts:2458 +#: src/strings.ts:2459 msgid "Remove from recents" msgstr "Remove from recents" @@ -5461,7 +5459,7 @@ msgstr "Remove from recents" msgid "Remove full name" msgstr "Remove full name" -#: src/strings.ts:2265 +#: src/strings.ts:2266 msgid "Remove link" msgstr "Remove link" @@ -5493,11 +5491,11 @@ msgstr "Reorder" msgid "Repeats daily at {date}" msgstr "Repeats daily at {date}" -#: src/strings.ts:2378 +#: src/strings.ts:2379 msgid "Replace" msgstr "Replace" -#: src/strings.ts:2379 +#: src/strings.ts:2380 msgid "Replace all" msgstr "Replace all" @@ -5534,7 +5532,7 @@ msgstr "Reset" msgid "Reset account password" msgstr "Reset account password" -#: src/strings.ts:2485 +#: src/strings.ts:2486 msgid "Reset homepage" msgstr "Reset homepage" @@ -5586,7 +5584,7 @@ msgstr "Restore" msgid "Restore backup" msgstr "Restore backup" -#: src/strings.ts:2407 +#: src/strings.ts:2408 msgid "Restore backup?" msgstr "Restore backup?" @@ -5630,7 +5628,7 @@ msgstr "Resubscribe from Playstore" msgid "Resubscribe to Pro" msgstr "Resubscribe to Pro" -#: src/strings.ts:2671 +#: src/strings.ts:2675 msgid "Retry" msgstr "Retry" @@ -5650,7 +5648,7 @@ msgstr "Revoke" msgid "Revoke biometric unlocking" msgstr "Revoke biometric unlocking" -#: src/strings.ts:2685 +#: src/strings.ts:2689 msgid "Revoke Inbox API Key - {name}" msgstr "Revoke Inbox API Key - {name}" @@ -5674,7 +5672,7 @@ msgstr "Rotate left" msgid "Rotate right" msgstr "Rotate right" -#: src/strings.ts:2288 +#: src/strings.ts:2289 msgid "Row properties" msgstr "Row properties" @@ -5754,11 +5752,11 @@ msgstr "Save your data recovery key in a safe place. You will need it to recover msgid "Save your recovery codes in a safe place. You will need them to recover your account in case you lose access to your two-factor authentication methods." msgstr "Save your recovery codes in a safe place. You will need them to recover your account in case you lose access to your two-factor authentication methods." -#: src/strings.ts:2397 +#: src/strings.ts:2398 msgid "Saved" msgstr "Saved" -#: src/strings.ts:2398 +#: src/strings.ts:2399 msgid "Saving" msgstr "Saving" @@ -5778,15 +5776,15 @@ msgstr "Saving zip file. Please wait..." msgid "Scan the QR code with your authenticator app" msgstr "Scan the QR code with your authenticator app" -#: src/strings.ts:2423 +#: src/strings.ts:2424 msgid "School work" msgstr "School work" -#: src/strings.ts:2496 +#: src/strings.ts:2497 msgid "Scroll to bottom" msgstr "Scroll to bottom" -#: src/strings.ts:2495 +#: src/strings.ts:2496 msgid "Scroll to top" msgstr "Scroll to top" @@ -5803,7 +5801,7 @@ msgstr "Search a note" msgid "Search a note to link to" msgstr "Search a note to link to" -#: src/strings.ts:2439 +#: src/strings.ts:2440 msgid "Search for notes, notebooks, and tags..." msgstr "Search for notes, notebooks, and tags..." @@ -5859,7 +5857,7 @@ msgstr "Search in Tags" msgid "Search in Trash" msgstr "Search in Trash" -#: src/strings.ts:2360 +#: src/strings.ts:2361 msgid "Search languages" msgstr "Search languages" @@ -5907,7 +5905,7 @@ msgstr "Select" msgid "Select a backup file from your device to restore backup" msgstr "Select a backup file from your device to restore backup" -#: src/strings.ts:2490 +#: src/strings.ts:2491 msgid "Select a notebook to move this notebook into, or unselect to move it to the root level." msgstr "Select a notebook to move this notebook into, or unselect to move it to the root level." @@ -5951,7 +5949,7 @@ msgstr "Select folder with backup files" msgid "Select how you would like to recieve the code" msgstr "Select how you would like to recieve the code" -#: src/strings.ts:2355 +#: src/strings.ts:2356 msgid "Select language" msgstr "Select language" @@ -5967,7 +5965,7 @@ msgstr "Select notebooks" msgid "Select notebooks you want to add note(s) to." msgstr "Select notebooks you want to add note(s) to." -#: src/strings.ts:2478 +#: src/strings.ts:2479 msgid "Select notes to link to \"{title}\"" msgstr "Select notes to link to \"{title}\"" @@ -5979,7 +5977,7 @@ msgstr "Select nth day of the month to repeat the reminder." msgid "Select profile picture" msgstr "Select profile picture" -#: src/strings.ts:2484 +#: src/strings.ts:2485 msgid "Select the default sidebar tab" msgstr "Select the default sidebar tab" @@ -5991,7 +5989,7 @@ msgstr "Select the folder that includes your backup files to list them here." msgid "Select the languages the spell checker should check in." msgstr "Select the languages the spell checker should check in." -#: src/strings.ts:2460 +#: src/strings.ts:2461 msgid "Select the release track for Notesnook." msgstr "Select the release track for Notesnook." @@ -6083,7 +6081,7 @@ msgstr "Set as dark theme" msgid "Set as default" msgstr "Set as default" -#: src/strings.ts:2482 +#: src/strings.ts:2483 msgid "Set as homepage" msgstr "Set as homepage" @@ -6095,7 +6093,7 @@ msgstr "Set as light theme" msgid "Set automatic trash cleanup interval from Settings > Behaviour > Clean trash interval." msgstr "Set automatic trash cleanup interval from Settings > Behaviour > Clean trash interval." -#: src/strings.ts:2632 +#: src/strings.ts:2636 msgid "Set expiry" msgstr "Set expiry" @@ -6205,7 +6203,7 @@ msgstr "Share note" msgid "Share Notesnook with friends!" msgstr "Share Notesnook with friends!" -#: src/strings.ts:2644 +#: src/strings.ts:2648 msgid "Share things to Notesbook from anywhere using the Inbox API" msgstr "Share things to Notesbook from anywhere using the Inbox API" @@ -6249,7 +6247,7 @@ msgstr "Signup failed" msgid "Silent" msgstr "Silent" -#: src/strings.ts:2329 +#: src/strings.ts:2330 msgid "Sink list item" msgstr "Sink list item" @@ -6293,11 +6291,11 @@ msgstr "Sort by" msgid "Source code" msgstr "Source code" -#: src/strings.ts:2356 +#: src/strings.ts:2357 msgid "Spaces" msgstr "Spaces" -#: src/strings.ts:2591 +#: src/strings.ts:2595 msgid "Special Offer" msgstr "Special Offer" @@ -6305,11 +6303,11 @@ msgstr "Special Offer" msgid "Spell check" msgstr "Spell check" -#: src/strings.ts:2295 +#: src/strings.ts:2296 msgid "Split cells" msgstr "Split cells" -#: src/strings.ts:2461 +#: src/strings.ts:2462 msgid "Stable" msgstr "Stable" @@ -6353,7 +6351,7 @@ msgstr "Start writing your note..." msgid "Status" msgstr "Status" -#: src/strings.ts:2474 +#: src/strings.ts:2475 msgid "Storage" msgstr "Storage" @@ -6361,7 +6359,7 @@ msgstr "Storage" msgid "Streaming not supported" msgstr "Streaming not supported" -#: src/strings.ts:2261 +#: src/strings.ts:2262 msgid "Strikethrough" msgstr "Strikethrough" @@ -6377,11 +6375,11 @@ msgstr "Subgroup added" msgid "Submit" msgstr "Submit" -#: src/strings.ts:2570 +#: src/strings.ts:2574 msgid "Subscribe" msgstr "Subscribe" -#: src/strings.ts:2571 +#: src/strings.ts:2575 msgid "Subscribe and start free trial" msgstr "Subscribe and start free trial" @@ -6409,7 +6407,7 @@ msgstr "Subscribed on Web" msgid "Subscribed using gift card" msgstr "Subscribed using gift card" -#: src/strings.ts:2272 +#: src/strings.ts:2273 msgid "Subscript" msgstr "Subscript" @@ -6433,7 +6431,7 @@ msgstr "Sun" msgid "Sunday" msgstr "Sunday" -#: src/strings.ts:2273 +#: src/strings.ts:2274 msgid "Superscript" msgstr "Superscript" @@ -6489,7 +6487,7 @@ msgstr "Syncing your data" msgid "Syncing your notes" msgstr "Syncing your notes" -#: src/strings.ts:2341 +#: src/strings.ts:2342 msgid "Table" msgstr "Table" @@ -6497,11 +6495,11 @@ msgstr "Table" msgid "Table of contents" msgstr "Table of contents" -#: src/strings.ts:2286 +#: src/strings.ts:2287 msgid "Table settings" msgstr "Table settings" -#: src/strings.ts:2535 +#: src/strings.ts:2536 msgid "tables, outlines, block level note linking" msgstr "tables, outlines, block level note linking" @@ -6538,7 +6536,7 @@ msgstr "Take a full backup of your data with all attachments" msgid "Take a partial backup of your data that does not include attachments" msgstr "Take a partial backup of your data that does not include attachments" -#: src/strings.ts:2340 +#: src/strings.ts:2341 msgid "Take a photo using camera" msgstr "Take a photo using camera" @@ -6598,11 +6596,11 @@ msgstr "Tap to try again" msgid "Tap twice to confirm you have saved the recovery key." msgstr "Tap twice to confirm you have saved the recovery key." -#: src/strings.ts:2346 +#: src/strings.ts:2347 msgid "Task list" msgstr "Task list" -#: src/strings.ts:2416 +#: src/strings.ts:2417 msgid "Tasks" msgstr "Tasks" @@ -6640,7 +6638,7 @@ msgstr "Terms of service" msgid "Terms of Service " msgstr "Terms of Service " -#: src/strings.ts:2578 +#: src/strings.ts:2582 msgid "terms of use." msgstr "terms of use." @@ -6652,11 +6650,11 @@ msgstr "Test connection" msgid "Test connection before changing server urls" msgstr "Test connection before changing server urls" -#: src/strings.ts:2284 +#: src/strings.ts:2285 msgid "Text color" msgstr "Text color" -#: src/strings.ts:2282 +#: src/strings.ts:2283 msgid "Text direction" msgstr "Text direction" @@ -6668,11 +6666,11 @@ msgstr "Thank you for choosing end-to-end encrypted note taking. Now you can syn msgid "Thank you for reporting!" msgstr "Thank you for reporting!" -#: src/strings.ts:2552 +#: src/strings.ts:2553 msgid "Thank you for subscribing" msgstr "Thank you for subscribing" -#: src/strings.ts:2586 +#: src/strings.ts:2590 msgid "Thank you for the purchase" msgstr "Thank you for the purchase" @@ -6688,7 +6686,7 @@ msgstr "Thank you. You are the proof that privacy always comes first." msgid "The {title} at {url} is not compatible with this client." msgstr "The {title} at {url} is not compatible with this client." -#: src/strings.ts:2631 +#: src/strings.ts:2635 msgid "The incoming note could not be unlocked with the provided password. Enter the correct password for the incoming note" msgstr "The incoming note could not be unlocked with the provided password. Enter the correct password for the incoming note" @@ -6696,7 +6694,7 @@ msgstr "The incoming note could not be unlocked with the provided password. Ente msgid "The information above will be publically available at" msgstr "The information above will be publically available at" -#: src/strings.ts:2605 +#: src/strings.ts:2609 msgid "The Notesnook Circle is exclusive to subscribers. Please consider subscribing to gain access to Notesnook Circle and enjoy additional benefits." msgstr "The Notesnook Circle is exclusive to subscribers. Please consider subscribing to gain access to Notesnook Circle and enjoy additional benefits." @@ -6732,7 +6730,7 @@ msgstr "Themes" msgid "There are no blocks in this note." msgstr "There are no blocks in this note." -#: src/strings.ts:2239 +#: src/strings.ts:2240 msgid "These items will be **kept in your Trash for {interval} days** after which they will be permanently deleted." msgstr "These items will be **kept in your Trash for {interval} days** after which they will be permanently deleted." @@ -6768,7 +6766,7 @@ msgstr "This error usually means the database file is either corrupt or it could msgid "This error usually means the search index is corrupted." msgstr "This error usually means the search index is corrupted." -#: src/strings.ts:2709 +#: src/strings.ts:2713 msgid "This feature is not available on this plan." msgstr "This feature is not available on this plan." @@ -6776,7 +6774,7 @@ msgstr "This feature is not available on this plan." msgid "This image cannot be previewed" msgstr "This image cannot be previewed" -#: src/strings.ts:2572 +#: src/strings.ts:2576 msgid "This is a one time purchase, no subscription." msgstr "This is a one time purchase, no subscription." @@ -6789,7 +6787,7 @@ msgstr "This may take a while" msgid "This must only be used for troubleshooting. Using it regularly for sync is not recommended and will lead to unexpected data loss and other issues. If you are having persistent issues with sync, please report them to us at support@streetwriters.co." msgstr "This must only be used for troubleshooting. Using it regularly for sync is not recommended and will lead to unexpected data loss and other issues. If you are having persistent issues with sync, please report them to us at support@streetwriters.co." -#: src/strings.ts:2637 +#: src/strings.ts:2641 msgid "This note is empty" msgstr "This note is empty" @@ -6858,19 +6856,19 @@ msgstr "To use app lock, you must enable biometrics such as Fingerprint lock or msgid "Toggle dark/light mode" msgstr "Toggle dark/light mode" -#: src/strings.ts:2464 +#: src/strings.ts:2465 msgid "Toggle focus mode" msgstr "Toggle focus mode" -#: src/strings.ts:2353 +#: src/strings.ts:2354 msgid "Toggle indentation mode" msgstr "Toggle indentation mode" -#: src/strings.ts:2382 +#: src/strings.ts:2383 msgid "Toggle replace" msgstr "Toggle replace" -#: src/strings.ts:2453 +#: src/strings.ts:2454 msgid "Toggle theme" msgstr "Toggle theme" @@ -6899,7 +6897,7 @@ msgstr "Trash gets automatically cleaned up after {days} days" msgid "Trash gets automatically cleaned up daily" msgstr "Trash gets automatically cleaned up daily" -#: src/strings.ts:2542 +#: src/strings.ts:2543 msgid "Try {plan} for free" msgstr "Try {plan} for free" @@ -6911,7 +6909,7 @@ msgstr "Try compact mode to fit more items on screen" msgid "Try free for 14 days" msgstr "Try free for 14 days" -#: src/strings.ts:2528 +#: src/strings.ts:2529 msgid "Try it for free" msgstr "Try it for free" @@ -6967,11 +6965,11 @@ msgstr "Unable to resolve download url" msgid "Unable to send 2FA code" msgstr "Unable to send 2FA code" -#: src/strings.ts:2488 +#: src/strings.ts:2489 msgid "Unarchive" msgstr "Unarchive" -#: src/strings.ts:2260 +#: src/strings.ts:2261 msgid "Underline" msgstr "Underline" @@ -6983,7 +6981,7 @@ msgstr "Undo" msgid "Unfavorite" msgstr "Unfavorite" -#: src/strings.ts:2582 +#: src/strings.ts:2586 msgid "Unlimited" msgstr "Unlimited" @@ -6999,7 +6997,7 @@ msgstr "Unlink notebook" msgid "Unlock" msgstr "Unlock" -#: src/strings.ts:2629 +#: src/strings.ts:2633 msgid "Unlock incoming note" msgstr "Unlock incoming note" @@ -7016,7 +7014,7 @@ msgstr "Unlock note" msgid "Unlock note to delete it" msgstr "Unlock note to delete it" -#: src/strings.ts:2640 +#: src/strings.ts:2644 msgid "Unlock note to merge conflicts" msgstr "Unlock note to merge conflicts" @@ -7068,12 +7066,12 @@ msgstr "Unpublish notes to delete them" msgid "Unregister" msgstr "Unregister" -#: src/strings.ts:2633 +#: src/strings.ts:2637 msgid "Unset expiry" msgstr "Unset expiry" #: src/strings.ts:210 -#: src/strings.ts:2362 +#: src/strings.ts:2363 msgid "Untitled" msgstr "Untitled" @@ -7089,7 +7087,7 @@ msgstr "Update available" msgid "Update now" msgstr "Update now" -#: src/strings.ts:2502 +#: src/strings.ts:2503 msgid "Upgrade" msgstr "Upgrade" @@ -7097,11 +7095,11 @@ msgstr "Upgrade" msgid "Upgrade now" msgstr "Upgrade now" -#: src/strings.ts:2501 +#: src/strings.ts:2502 msgid "Upgrade plan" msgstr "Upgrade plan" -#: src/strings.ts:2527 +#: src/strings.ts:2528 msgid "Upgrade plan to {plan} to use this feature." msgstr "Upgrade plan to {plan} to use this feature." @@ -7117,7 +7115,7 @@ msgstr "Upgrade to Notesnook Pro to create more tags." msgid "Upgrade to Pro" msgstr "Upgrade to Pro" -#: src/strings.ts:2597 +#: src/strings.ts:2601 msgid "Upgrade to redeem" msgstr "Upgrade to redeem" @@ -7125,7 +7123,7 @@ msgstr "Upgrade to redeem" msgid "Upload" msgstr "Upload" -#: src/strings.ts:2339 +#: src/strings.ts:2340 msgid "Upload from disk" msgstr "Upload from disk" @@ -7151,7 +7149,7 @@ msgstr "Uploads" msgid "Urgent" msgstr "Urgent" -#: src/strings.ts:2389 +#: src/strings.ts:2390 msgid "URL" msgstr "URL" @@ -7175,7 +7173,7 @@ msgstr "Use a data recovery key to reset your account password." msgid "Use account password" msgstr "Use account password" -#: src/strings.ts:2534 +#: src/strings.ts:2535 msgid "Use advanced note taking features like" msgstr "Use advanced note taking features like" @@ -7245,7 +7243,7 @@ msgstr "Use this if changes from other devices are not appearing on this device. msgid "Use this if changes made on this device are not appearing on other devices. This will overwrite the data on the server with the data from this device." msgstr "Use this if changes made on this device are not appearing on other devices. This will overwrite the data on the server with the data from this device." -#: src/strings.ts:2475 +#: src/strings.ts:2476 msgid "used" msgstr "used" @@ -7253,11 +7251,11 @@ msgstr "used" msgid "User verification failed" msgstr "User verification failed" -#: src/strings.ts:2256 +#: src/strings.ts:2257 msgid "Using {instance} (v{version})" msgstr "Using {instance} (v{version})" -#: src/strings.ts:2254 +#: src/strings.ts:2255 msgid "Using official Notesnook instance" msgstr "Using official Notesnook instance" @@ -7265,7 +7263,7 @@ msgstr "Using official Notesnook instance" msgid "v{version} available" msgstr "v{version} available" -#: src/strings.ts:2711 +#: src/strings.ts:2715 msgid "Value must be between {min} and {max}" msgstr "Value must be between {min} and {max}" @@ -7337,11 +7335,11 @@ msgstr "Videos" msgid "View all linked notebooks" msgstr "View all linked notebooks" -#: src/strings.ts:2649 +#: src/strings.ts:2653 msgid "View and edit your inbox public/private key pair" msgstr "View and edit your inbox public/private key pair" -#: src/strings.ts:2655 +#: src/strings.ts:2659 msgid "View and manage inbox API keys" msgstr "View and manage inbox API keys" @@ -7365,7 +7363,7 @@ msgstr "View source code" msgid "View your recovery codes to recover your account in case you lose access to your two-factor authentication methods." msgstr "View your recovery codes to recover your account in case you lose access to your two-factor authentication methods." -#: src/strings.ts:2612 +#: src/strings.ts:2616 msgid "Views" msgstr "Views" @@ -7393,7 +7391,7 @@ msgstr "We are sorry, it seems that the app crashed due to an error. You can sub msgid "We have sent you an email confirmation link. Please check your email inbox. If you cannot find the email, check your spam folder." msgstr "We have sent you an email confirmation link. Please check your email inbox. If you cannot find the email, check your spam folder." -#: src/strings.ts:2513 +#: src/strings.ts:2514 msgid "We require credit card details to fight abuse and to make it seamless for you to upgrade. Your credit card is NOT charged until your free trial ends and your subscription starts. You will be notified via email of the upcoming charge before your trial ends." msgstr "We require credit card details to fight abuse and to make it seamless for you to upgrade. Your credit card is NOT charged until your free trial ends and your subscription starts. You will be notified via email of the upcoming charge before your trial ends." @@ -7409,11 +7407,11 @@ msgstr "We will send you occasional promotional offers & product updates on your msgid "We would love to know what you think!" msgstr "We would love to know what you think!" -#: src/strings.ts:2554 +#: src/strings.ts:2555 msgid "We’re setting up your plan right now. We’ll notify you as soon as everything is ready." msgstr "We’re setting up your plan right now. We’ll notify you as soon as everything is ready." -#: src/strings.ts:2324 +#: src/strings.ts:2325 msgid "Web clip settings" msgstr "Web clip settings" @@ -7433,7 +7431,7 @@ msgstr "Wednesday" msgid "Week" msgstr "Week" -#: src/strings.ts:2625 +#: src/strings.ts:2629 msgid "Week format" msgstr "Week format" @@ -7450,7 +7448,7 @@ msgstr "Welcome back, {email}" msgid "Welcome back!" msgstr "Welcome back!" -#: src/strings.ts:2585 +#: src/strings.ts:2589 msgid "Welcome to Notesnook {plan}" msgstr "Welcome to Notesnook {plan}" @@ -7462,11 +7460,11 @@ msgstr "Welcome to Notesnook Pro" msgid "What do I do if I am not getting the email?" msgstr "What do I do if I am not getting the email?" -#: src/strings.ts:2505 +#: src/strings.ts:2506 msgid "What happens to my data if I switch plans?" msgstr "What happens to my data if I switch plans?" -#: src/strings.ts:2521 +#: src/strings.ts:2522 msgid "What is your refund policy?" msgstr "What is your refund policy?" @@ -7474,19 +7472,19 @@ msgstr "What is your refund policy?" msgid "What went wrong?" msgstr "What went wrong?" -#: src/strings.ts:2511 +#: src/strings.ts:2512 msgid "Why do you need my credit card details for a free trial?" msgstr "Why do you need my credit card details for a free trial?" -#: src/strings.ts:2385 +#: src/strings.ts:2386 msgid "Width" msgstr "Width" -#: src/strings.ts:2491 +#: src/strings.ts:2492 msgid "Words" msgstr "Words" -#: src/strings.ts:2414 +#: src/strings.ts:2415 msgid "Work & Office" msgstr "Work & Office" @@ -7519,7 +7517,7 @@ msgstr "Yearly" msgid "Yes" msgstr "Yes" -#: src/strings.ts:2518 +#: src/strings.ts:2519 msgid "Yes, you can cancel your trial anytime. No questions asked." msgstr "Yes, you can cancel your trial anytime. No questions asked." @@ -7527,11 +7525,11 @@ msgstr "Yes, you can cancel your trial anytime. No questions asked." msgid "You also agree to recieve marketing emails from us which you can opt-out of from app settings." msgstr "You also agree to recieve marketing emails from us which you can opt-out of from app settings." -#: src/strings.ts:2590 +#: src/strings.ts:2594 msgid "You are already subscribed to this plan." msgstr "You are already subscribed to this plan." -#: src/strings.ts:2241 +#: src/strings.ts:2242 msgid "You are editing \"{notebookTitle}\"." msgstr "You are editing \"{notebookTitle}\"." @@ -7559,11 +7557,11 @@ msgstr "You can also link a note to multiple Notebooks. Tap and hold any noteboo msgid "You can change the theme at any time from Settings or the side menu." msgstr "You can change the theme at any time from Settings or the side menu." -#: src/strings.ts:2593 +#: src/strings.ts:2597 msgid "You can change your subscription plan from the web app" msgstr "You can change your subscription plan from the web app" -#: src/strings.ts:2422 +#: src/strings.ts:2423 msgid "You can create shortcuts of frequently accessed notebooks in the side menu" msgstr "You can create shortcuts of frequently accessed notebooks in the side menu" @@ -7629,7 +7627,7 @@ msgstr "You have been logged out from all other devices." msgid "You have been logged out." msgstr "You have been logged out." -#: src/strings.ts:2589 +#: src/strings.ts:2593 msgid "You have made a one time purchase. To change your plan please contact support." msgstr "You have made a one time purchase. To change your plan please contact support." @@ -7730,7 +7728,7 @@ msgstr "Your account will be permanently deleted along with all your data, login msgid "Your archive" msgstr "Your archive" -#: src/strings.ts:2487 +#: src/strings.ts:2488 msgid "Your archive is empty" msgstr "Your archive is empty" @@ -7750,7 +7748,7 @@ msgstr "Your changes have been saved and will be reflected after the app has ref msgid "Your current 2FA method is {method}" msgstr "Your current 2FA method is {method}" -#: src/strings.ts:2596 +#: src/strings.ts:2600 msgid "Your current subscription does not allow changing plans" msgstr "Your current subscription does not allow changing plans" @@ -7762,7 +7760,7 @@ msgstr "Your data recovery key is basically a hashed version of your password (p msgid "Your data recovery key will be used to decrypt your data" msgstr "Your data recovery key will be used to decrypt your data" -#: src/strings.ts:2507 +#: src/strings.ts:2508 msgid "Your data remains 100% accessible regardless of what plan you are on. That includes your notes, notebooks, attachments, and anything else you might have created." msgstr "Your data remains 100% accessible regardless of what plan you are on. That includes your notes, notebooks, attachments, and anything else you might have created." @@ -7770,7 +7768,7 @@ msgstr "Your data remains 100% accessible regardless of what plan you are on. Th msgid "Your email has been confirmed." msgstr "Your email has been confirmed." -#: src/strings.ts:2498 +#: src/strings.ts:2499 msgid "Your email has been confirmed. You can now securely sync your encrypted notes across all devices." msgstr "Your email has been confirmed. You can now securely sync your encrypted notes across all devices." @@ -7798,7 +7796,7 @@ msgstr "Your free trial has started" msgid "Your free trial is ending soon" msgstr "Your free trial is ending soon" -#: src/strings.ts:2624 +#: src/strings.ts:2628 msgid "Your free trial is on-going. Your subscription will start on {trialExpiryDate}" msgstr "Your free trial is on-going. Your subscription will start on {trialExpiryDate}" @@ -7882,7 +7880,7 @@ msgstr "Z to A" msgid "Zipping" msgstr "Zipping" -#: src/strings.ts:2463 +#: src/strings.ts:2464 msgid "Zoom" msgstr "Zoom" diff --git a/packages/intl/locale/pseudo-LOCALE.po b/packages/intl/locale/pseudo-LOCALE.po index 5b3fefa60..71807e773 100644 --- a/packages/intl/locale/pseudo-LOCALE.po +++ b/packages/intl/locale/pseudo-LOCALE.po @@ -13,7 +13,7 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: src/strings.ts:2412 +#: src/strings.ts:2413 msgid " \"Notebook > Notes\"" msgstr "" @@ -66,6 +66,11 @@ msgstr "" #. placeholder {0}: version ? `v${version} ` : "New version" #: src/strings.ts:533 msgid "{0} Highlights 🎉" +msgstr "<<<<<<< HEAD" + +#. placeholder {0}: platform === "ios" ? "Apple" : "Google" +#: src/strings.ts:2569 +msgid "{0} will remind you before your trial ends" msgstr "" #: src/strings.ts:1755 @@ -286,9 +291,9 @@ msgstr "" #: generated/actions.ts:127 msgid "{count, plural, one {Item unpublished} other {# items unpublished}}" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2429 +#: src/strings.ts:2430 msgid "{count, plural, one {Move all notes in this notebook to trash} other {Move all notes in these notebooks to trash}}" msgstr "" @@ -489,17 +494,17 @@ msgstr "" #: generated/do-actions.ts:107 msgid "{count, plural, one {Unpublish note} other {Unpublish # notes}}" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2499 +#: src/strings.ts:2500 msgid "{count} characters" msgstr "" #: src/strings.ts:1566 msgid "{days, plural, one {1 day} other {# days}}" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2559 +#: src/strings.ts:2560 msgid "{days} days free" msgstr "" @@ -561,9 +566,9 @@ msgstr "" #: src/strings.ts:1708 msgid "{percentage}% updating..." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2543 +#: src/strings.ts:2544 msgid "{plan} plan" msgstr "" @@ -573,9 +578,9 @@ msgstr "" #: src/strings.ts:1339 msgid "{platform, select, android {Backup file saved in \"Notesnook backups\" folder on your phone.} other {Backup file is saved in File Manager/Notesnook folder}}" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2359 +#: src/strings.ts:2360 msgid "{selected} selected" msgstr "" @@ -607,19 +612,19 @@ msgstr "" msgid "#notesnook" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2665 +#: src/strings.ts:2669 msgid "1 day" msgstr "" -#: src/strings.ts:2667 +#: src/strings.ts:2671 msgid "1 month" msgstr "" -#: src/strings.ts:2666 +#: src/strings.ts:2670 msgid "1 week" msgstr "" -#: src/strings.ts:2668 +#: src/strings.ts:2672 msgid "1 year" msgstr "" @@ -637,9 +642,9 @@ msgstr "" #: src/strings.ts:1010 msgid "2FA code sent via {method}" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2583 +#: src/strings.ts:2587 msgid "5 year plan (One time purchase)" msgstr "" @@ -673,17 +678,17 @@ msgstr "" #: src/strings.ts:1849 msgid "Account password" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2454 +#: src/strings.ts:2455 msgid "Actions for note: {title}" msgstr "" -#: src/strings.ts:2455 +#: src/strings.ts:2456 msgid "Actions for notebook: {title}" msgstr "" -#: src/strings.ts:2456 +#: src/strings.ts:2457 msgid "Actions for tag: {title}" msgstr "" @@ -715,15 +720,15 @@ msgstr "" msgid "Add color" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2653 +#: src/strings.ts:2657 msgid "Add key" msgstr "" #: src/strings.ts:895 msgid "Add notebook" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2481 +#: src/strings.ts:2482 msgid "Add notes" msgstr "" @@ -749,17 +754,17 @@ msgstr "" #: src/strings.ts:936 msgid "Add tags to multiple notes at once" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2246 +#: src/strings.ts:2247 msgid "Add to dictionary" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2616 +#: src/strings.ts:2620 msgid "Add to home" msgstr "" -#: src/strings.ts:2479 +#: src/strings.ts:2480 msgid "Add to notebook" msgstr "" @@ -769,9 +774,9 @@ msgstr "" #: src/strings.ts:977 msgid "Add your first notebook" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2619 +#: src/strings.ts:2623 msgid "Adjust the line height of the editor" msgstr "" @@ -781,17 +786,17 @@ msgstr "" #: src/strings.ts:1728 msgid "After scanning the QR code image, the app will display a code that you can enter below." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2311 +#: src/strings.ts:2312 msgid "Align left" msgstr "" -#: src/strings.ts:2312 +#: src/strings.ts:2313 msgid "Align right" msgstr "" -#: src/strings.ts:2281 +#: src/strings.ts:2282 msgid "Alignment" msgstr "" @@ -801,9 +806,9 @@ msgstr "" #: src/strings.ts:91 msgid "All attachments are end-to-end encrypted." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2406 +#: src/strings.ts:2407 msgid "All cached attachments have been cleared." msgstr "" @@ -861,9 +866,9 @@ msgstr "" #: src/strings.ts:250 msgid "An error occurred while migrating your data. You can logout of your account and try to relogin. However this is not recommended as it may result in some data loss if your data was not synced." -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2577 +#: src/strings.ts:2581 msgid "and" msgstr "" @@ -873,37 +878,37 @@ msgstr "" #: src/strings.ts:1793 msgid "and get a chance to win free promo codes." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2536 +#: src/strings.ts:2537 msgid "and much more." msgstr "" #: src/strings.ts:1399 msgid "and we will manually confirm your account." -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2594 +#: src/strings.ts:2598 msgid "ANNOUNCEMENT" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2683 +#: src/strings.ts:2687 msgid "API key copied to clipboard" msgstr "" -#: src/strings.ts:2661 +#: src/strings.ts:2665 msgid "API key created successfully" msgstr "" -#: src/strings.ts:2688 +#: src/strings.ts:2692 msgid "API key revoked" msgstr "" -#: src/strings.ts:2654 +#: src/strings.ts:2658 msgid "API Keys" msgstr "" -#: src/strings.ts:2675 +#: src/strings.ts:2679 msgid "API Keys Limit Reached" msgstr "" @@ -951,10 +956,10 @@ msgstr "" #: src/strings.ts:2046 msgid "Applying changes" -msgstr "" +msgstr "<<<<<<< HEAD" #: src/strings.ts:1532 -#: src/strings.ts:2486 +#: src/strings.ts:2487 msgid "Archive" msgstr "" @@ -986,7 +991,7 @@ msgstr "" msgid "Are you sure you want to remove your profile picture?" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2687 +#: src/strings.ts:2691 msgid "Are you sure you want to revoke the key \"{name}\"? All inbox actions using this key will stop working immediately." msgstr "" @@ -1008,9 +1013,9 @@ msgstr "" #: src/strings.ts:433 msgid "Atleast 8 characters required" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2348 +#: src/strings.ts:2349 msgid "Attach image from URL" msgstr "" @@ -1023,23 +1028,23 @@ msgid "attachment" msgstr "" #: src/strings.ts:300 -#: src/strings.ts:2345 +#: src/strings.ts:2346 msgid "Attachment" msgstr "" -#: src/strings.ts:2449 +#: src/strings.ts:2450 msgid "Attachment manager" msgstr "" #: src/strings.ts:1937 msgid "Attachment preview failed" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2399 +#: src/strings.ts:2400 msgid "Attachment recheck cancelled" msgstr "" -#: src/strings.ts:2316 +#: src/strings.ts:2317 msgid "Attachment settings" msgstr "" @@ -1054,9 +1059,9 @@ msgstr "" #: src/strings.ts:1886 msgid "Attachments cache cleared!" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2401 +#: src/strings.ts:2402 msgid "Attachments recheck complete" msgstr "" @@ -1068,11 +1073,11 @@ msgstr "" msgid "Auth server" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2681 +#: src/strings.ts:2685 msgid "Authenticate" msgstr "" -#: src/strings.ts:2678 +#: src/strings.ts:2682 msgid "Authenticate to view API key" msgstr "" @@ -1155,13 +1160,13 @@ msgstr "" #: src/strings.ts:2157 msgid "Available on iOS & Android" -msgstr "<<<<<<< HEAD" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2706 +#: src/strings.ts:2710 msgid "Back" msgstr "" -#: src/strings.ts:2304 +#: src/strings.ts:2305 msgid "Background color" msgstr "" @@ -1247,29 +1252,29 @@ msgstr "" #: src/strings.ts:2138 msgid "Behaviour" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2473 +#: src/strings.ts:2474 msgid "Believer plan" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2580 +#: src/strings.ts:2584 msgid "Best value" msgstr "" -#: src/strings.ts:2462 +#: src/strings.ts:2463 msgid "Beta" msgstr "" -#: src/strings.ts:2262 +#: src/strings.ts:2263 msgid "Bi-directional note link" msgstr "" -#: src/strings.ts:2556 +#: src/strings.ts:2557 msgid "billed annually at {price}" msgstr "" -#: src/strings.ts:2557 +#: src/strings.ts:2558 msgid "billed monthly at {price}" msgstr "" @@ -1295,53 +1300,53 @@ msgstr "" #: src/strings.ts:1188 msgid "Biometrics not enrolled" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2258 +#: src/strings.ts:2259 msgid "Bold" msgstr "" -#: src/strings.ts:2411 +#: src/strings.ts:2412 msgid "Boost your productivity with Notebooks and organize your notes." msgstr "" #: src/strings.ts:1811 msgid "Browse" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2275 +#: src/strings.ts:2276 msgid "Bullet list" msgstr "" #: src/strings.ts:405 msgid "By" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2575 +#: src/strings.ts:2579 msgid "By joining you agree to our" msgstr "" #: src/strings.ts:101 msgid "By signing up, you agree to our " -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2336 +#: src/strings.ts:2337 msgid "Callout" msgstr "" -#: src/strings.ts:2516 +#: src/strings.ts:2517 msgid "Can I cancel my free trial anytime?" msgstr "" #: src/strings.ts:549 msgid "Cancel" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2573 +#: src/strings.ts:2577 msgid "Cancel anytime, subscription auto-renews." msgstr "" -#: src/strings.ts:2538 +#: src/strings.ts:2539 msgid "Cancel anytime." msgstr "" @@ -1359,30 +1364,30 @@ msgstr "" #: src/strings.ts:518 msgid "Cancel upload" -msgstr "<<<<<<< HEAD" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2677 +#: src/strings.ts:2681 msgid "Cannot create more than 10 api keys at a time. Please revoke some existing keys before creating new ones." msgstr "" -#: src/strings.ts:2303 +#: src/strings.ts:2304 msgid "Cell background color" msgstr "" -#: src/strings.ts:2305 +#: src/strings.ts:2306 msgid "Cell border color" msgstr "" -#: src/strings.ts:2307 #: src/strings.ts:2308 +#: src/strings.ts:2309 msgid "Cell border width" msgstr "" -#: src/strings.ts:2289 +#: src/strings.ts:2290 msgid "Cell properties" msgstr "" -#: src/strings.ts:2306 +#: src/strings.ts:2307 msgid "Cell text color" msgstr "" @@ -1416,9 +1421,9 @@ msgstr "" #: src/strings.ts:1127 msgid "Change how the app behaves in different situations" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2354 +#: src/strings.ts:2355 msgid "Change language" msgstr "" @@ -1428,9 +1433,9 @@ msgstr "" #: src/strings.ts:434 msgid "Change password" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2587 +#: src/strings.ts:2591 msgid "Change plan" msgstr "" @@ -1466,15 +1471,15 @@ msgstr "" msgid "Changes from other devices won't be updated in the editor in real-time." msgstr "<<<<<<< HEAD" -#: src/strings.ts:2697 +#: src/strings.ts:2701 msgid "Changing Inbox PGP keys will delete all your unsynced inbox items." msgstr "" #: src/strings.ts:734 msgid "Changing password is an irreversible process. You will be logged out from all your devices. Please make sure you do not close the app while your password is changing and have good internet connection." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2492 +#: src/strings.ts:2493 msgid "Characters" msgstr "" @@ -1500,9 +1505,9 @@ msgstr "" #: src/strings.ts:684 msgid "Check your spam folder if you haven't received an email yet." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2403 +#: src/strings.ts:2404 msgid "Checking all attachments" msgstr "" @@ -1512,17 +1517,17 @@ msgstr "" #: src/strings.ts:1707 msgid "Checking for updates" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2402 +#: src/strings.ts:2403 msgid "Checking note attachments" msgstr "" -#: src/strings.ts:2277 +#: src/strings.ts:2278 msgid "Checklist" msgstr "" -#: src/strings.ts:2331 +#: src/strings.ts:2332 msgid "Choose a block to insert" msgstr "" @@ -1532,9 +1537,9 @@ msgstr "" #: src/strings.ts:2104 msgid "Choose backup format" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2367 +#: src/strings.ts:2368 msgid "Choose custom color" msgstr "" @@ -1544,9 +1549,9 @@ msgstr "" #: src/strings.ts:1135 msgid "Choose how dates are displayed in the app" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2622 +#: src/strings.ts:2626 msgid "Choose how day is displayed in the app" msgstr "" @@ -1560,9 +1565,9 @@ msgstr "" #: src/strings.ts:402 msgid "Choose how you want to secure your notes locally." -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2627 +#: src/strings.ts:2631 msgid "Choose what day to display as the first day of the week" msgstr "" @@ -1584,9 +1589,9 @@ msgstr "" #: src/strings.ts:1872 msgid "Clear all cached attachments. Current cache size: {cacheSize}" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2271 +#: src/strings.ts:2272 msgid "Clear all formatting" msgstr "" @@ -1596,9 +1601,9 @@ msgstr "" #: src/strings.ts:1870 msgid "Clear cache" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2365 +#: src/strings.ts:2366 msgid "Clear completed tasks" msgstr "" @@ -1643,9 +1648,13 @@ msgid "" "---\n" "\n" "**Only use this for troubleshooting purposes. If you are having persistent issues, it is recommended that you reach out to us via support@streetwriters.co so we can help you resolve it permanently.**" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2609 +#: src/strings.ts:2231 +msgid "Clearing trash will permanently delete all the items in your trash. This action is IRREVERSIBLE." +msgstr "<<<<<<< HEAD" + +#: src/strings.ts:2613 msgid "Click here to directly claim the promotion." msgstr "" @@ -1659,17 +1668,17 @@ msgstr "" #: src/strings.ts:1774 msgid "Click to remove" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2394 +#: src/strings.ts:2395 msgid "Click to reset {title}" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2617 +#: src/strings.ts:2621 msgid "Click to save" msgstr "" -#: src/strings.ts:2613 +#: src/strings.ts:2617 msgid "Click to update" msgstr "" @@ -1679,13 +1688,13 @@ msgstr "" #: src/strings.ts:2021 msgid "Close all" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2452 +#: src/strings.ts:2453 msgid "Close all tabs" msgstr "" -#: src/strings.ts:2451 +#: src/strings.ts:2452 msgid "Close current tab" msgstr "" @@ -1703,21 +1712,21 @@ msgstr "" #: src/strings.ts:2019 msgid "Close to the right" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2530 +#: src/strings.ts:2531 msgid "cloud storage space for storing images and files." msgstr "" -#: src/strings.ts:2269 +#: src/strings.ts:2270 msgid "Code" msgstr "" -#: src/strings.ts:2333 +#: src/strings.ts:2334 msgid "Code block" msgstr "" -#: src/strings.ts:2270 +#: src/strings.ts:2271 msgid "Code remove" msgstr "" @@ -1752,21 +1761,21 @@ msgstr "" #: src/strings.ts:319 msgid "Colors" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2287 +#: src/strings.ts:2288 msgid "Column properties" msgstr "" -#: src/strings.ts:2443 +#: src/strings.ts:2444 msgid "Command palette" msgstr "" #: src/strings.ts:1273 msgid "Community" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2550 +#: src/strings.ts:2551 msgid "Compare plans" msgstr "" @@ -1784,13 +1793,13 @@ msgstr "" #: src/strings.ts:144 msgid "Compressed images are uploaded in Full HD resolution and usually are good enough for most use cases." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2253 +#: src/strings.ts:2254 msgid "Configure" msgstr "" -#: src/strings.ts:2408 +#: src/strings.ts:2409 msgid "Configure server URLs for Notesnook" msgstr "" @@ -1812,9 +1821,9 @@ msgstr "" #: src/strings.ts:1489 msgid "Confirm pin" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2641 +#: src/strings.ts:2645 msgid "Confirmation email sent" msgstr "" @@ -1861,21 +1870,21 @@ msgstr "" #: src/strings.ts:679 msgid "Copy codes" -msgstr "" +msgstr "<<<<<<< HEAD" #: src/strings.ts:912 msgid "Copy ID" msgstr "" -#: src/strings.ts:2249 +#: src/strings.ts:2250 msgid "Copy image" msgstr "" #: src/strings.ts:910 msgid "Copy link" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2248 +#: src/strings.ts:2249 msgid "Copy link text" msgstr "" @@ -1947,11 +1956,11 @@ msgstr "" msgid "Create account" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2656 +#: src/strings.ts:2660 msgid "Create API Key" msgstr "" -#: src/strings.ts:2673 +#: src/strings.ts:2677 msgid "Create Key" msgstr "" @@ -1983,15 +1992,15 @@ msgstr "" msgid "Create your account" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2672 +#: src/strings.ts:2676 msgid "Create your first api key to get started." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2231 +#: src/strings.ts:2232 msgid "Created at" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2692 +#: src/strings.ts:2696 msgid "Created on" msgstr "" @@ -2000,7 +2009,7 @@ msgstr "" msgid "Creating a{0} backup" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2664 +#: src/strings.ts:2668 msgid "Creating..." msgstr "" @@ -2062,9 +2071,9 @@ msgstr "" #: src/strings.ts:1146 msgid "Customize toolbar" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2247 +#: src/strings.ts:2248 msgid "Cut" msgstr "" @@ -2123,9 +2132,9 @@ msgstr "" #: src/strings.ts:1843 msgid "Day" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2621 +#: src/strings.ts:2625 msgid "Day format" msgstr "" @@ -2147,9 +2156,9 @@ msgstr "" #: src/strings.ts:1268 msgid "Debugging" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2396 +#: src/strings.ts:2397 msgid "Decrease {title}" msgstr "" @@ -2180,9 +2189,9 @@ msgstr "" #: src/strings.ts:1129 msgid "Default screen to open on app launch" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2483 +#: src/strings.ts:2484 msgid "Default sidebar tab" msgstr "" @@ -2204,21 +2213,21 @@ msgstr "" #: src/strings.ts:1321 msgid "Delete collapsed section" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2294 +#: src/strings.ts:2295 msgid "Delete column" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2638 +#: src/strings.ts:2642 msgid "Delete data" msgstr "" #: src/strings.ts:1316 msgid "Delete group" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2368 +#: src/strings.ts:2369 msgid "Delete mode" msgstr "" @@ -2228,13 +2237,13 @@ msgstr "" #: src/strings.ts:569 msgid "Delete permanently" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2301 +#: src/strings.ts:2302 msgid "Delete row" msgstr "" -#: src/strings.ts:2302 +#: src/strings.ts:2303 msgid "Delete table" msgstr "" @@ -2282,7 +2291,7 @@ msgstr "" msgid "Disable editor margins" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2650 +#: src/strings.ts:2654 msgid "Disable Inbox API" msgstr "" @@ -2298,7 +2307,7 @@ msgstr "" msgid "Disabled" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2652 +#: src/strings.ts:2656 msgid "Disabling will delete all your unsynced inbox items. Additionally, disabling will revoke all existing API keys, they will no longer work. Are you sure?" msgstr "" @@ -2320,11 +2329,7 @@ msgstr "" #: src/strings.ts:273 msgid "Do you enjoy using Notesnook?" -msgstr "" - -#: src/strings.ts:2230 -msgid "Do you want to clear the trash?" -msgstr "" +msgstr "<<<<<<< HEAD" #: src/strings.ts:1265 msgid "Documentation" @@ -2384,9 +2389,9 @@ msgstr "" #: src/strings.ts:1818 msgid "Download all attachments" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2317 +#: src/strings.ts:2318 msgid "Download attachment" msgstr "" @@ -2449,17 +2454,17 @@ msgstr "" #: src/strings.ts:1665 msgid "Drop your files here to attach" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2560 +#: src/strings.ts:2561 msgid "Due {date}" msgstr "" #: src/strings.ts:655 msgid "Due date" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2558 +#: src/strings.ts:2559 msgid "Due today" msgstr "" @@ -2467,36 +2472,36 @@ msgstr "" msgid "Duplicate" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2658 +#: src/strings.ts:2662 msgid "e.g., Todo integration" msgstr "" #: src/strings.ts:644 msgid "Earliest first" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2420 +#: src/strings.ts:2421 msgid "Easy access" msgstr "" #: src/strings.ts:1779 msgid "Edit" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2628 +#: src/strings.ts:2632 msgid "Edit creation date" msgstr "" #: src/strings.ts:527 msgid "Edit internal link" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2236 -#: src/strings.ts:2264 +#: src/strings.ts:2237 +#: src/strings.ts:2265 msgid "Edit link" msgstr "" -#: src/strings.ts:2476 +#: src/strings.ts:2477 msgid "Edit profile" msgstr "" @@ -2511,17 +2516,17 @@ msgstr "" #: src/strings.ts:1144 #: src/strings.ts:1528 msgid "Editor" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2584 +#: src/strings.ts:2588 msgid "Education plan" msgstr "" #: src/strings.ts:1483 msgid "Email" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2433 +#: src/strings.ts:2434 msgid "Email copied" msgstr "" @@ -2543,17 +2548,17 @@ msgstr "" #: src/strings.ts:857 msgid "Email updated to {email}" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2343 +#: src/strings.ts:2344 msgid "Embed" msgstr "" -#: src/strings.ts:2323 +#: src/strings.ts:2324 msgid "Embed properties" msgstr "" -#: src/strings.ts:2319 +#: src/strings.ts:2320 msgid "Embed settings" msgstr "" @@ -2573,15 +2578,15 @@ msgstr "" msgid "Enable editor margins" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2645 +#: src/strings.ts:2649 msgid "Enable Inbox API" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2467 +#: src/strings.ts:2468 msgid "Enable ligatures for common symbols like →, ←, etc" msgstr "" -#: src/strings.ts:2383 +#: src/strings.ts:2384 msgid "Enable regex" msgstr "" @@ -2593,7 +2598,7 @@ msgstr "" msgid "Enable two-factor authentication to add an extra layer of security to your account." msgstr "<<<<<<< HEAD" -#: src/strings.ts:2646 +#: src/strings.ts:2650 msgid "Enable/Disable Inbox API" msgstr "" @@ -2603,9 +2608,9 @@ msgstr "" #: src/strings.ts:200 msgid "Encrypted and synced" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2243 +#: src/strings.ts:2244 msgid "Encrypted backup" msgstr "" @@ -2655,9 +2660,9 @@ msgstr "" #: src/strings.ts:1513 msgid "Enter email address" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2371 +#: src/strings.ts:2372 msgid "Enter embed source URL" msgstr "" @@ -2699,17 +2704,17 @@ msgstr "" #: src/strings.ts:117 msgid "Enter the 6 digit code sent to your phone number to continue logging in" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2435 +#: src/strings.ts:2436 msgid "Enter the gift code to redeem your subscription." msgstr "" #: src/strings.ts:120 msgid "Enter the recovery code to continue logging in" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2620 +#: src/strings.ts:2624 msgid "Enter title" msgstr "" @@ -2723,9 +2728,9 @@ msgstr "" #: src/strings.ts:2091 msgid "Enter your username" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2427 +#: src/strings.ts:2428 msgid "Error" msgstr "" @@ -2759,69 +2764,69 @@ msgstr "" #: src/strings.ts:1698 msgid "Errors in {count} attachments" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2472 +#: src/strings.ts:2473 msgid "Essential plan" msgstr "" #: src/strings.ts:1630 msgid "Events server" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2413 +#: src/strings.ts:2414 msgid "Every Notebook can have notes and sub notebooks." msgstr "" -#: src/strings.ts:2415 +#: src/strings.ts:2416 msgid "Everything related to my job in one place." msgstr "" -#: src/strings.ts:2424 +#: src/strings.ts:2425 msgid "Everything related to my school in one place." msgstr "" -#: src/strings.ts:2441 +#: src/strings.ts:2442 msgid "Execute" msgstr "" -#: src/strings.ts:2440 +#: src/strings.ts:2441 msgid "Execute a command..." msgstr "" #: src/strings.ts:2015 msgid "Exit fullscreen" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2375 +#: src/strings.ts:2376 msgid "Expand" msgstr "" -#: src/strings.ts:2468 +#: src/strings.ts:2469 msgid "Expand sidebar" msgstr "" #: src/strings.ts:2074 msgid "Experience the next level of private note taking\"" -msgstr "<<<<<<< HEAD" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2694 +#: src/strings.ts:2698 msgid "Expired" msgstr "" -#: src/strings.ts:2659 +#: src/strings.ts:2663 msgid "Expires in" msgstr "" -#: src/strings.ts:2695 +#: src/strings.ts:2699 msgid "Expires on" msgstr "" -#: src/strings.ts:2634 +#: src/strings.ts:2638 msgid "Expiry date" msgstr "" -#: src/strings.ts:2541 +#: src/strings.ts:2542 msgid "Explore all plans" msgstr "" @@ -2844,9 +2849,9 @@ msgstr "" #. placeholder {0}: format ? " " + format : "" #: src/strings.ts:2037 msgid "Export as{0}" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2635 +#: src/strings.ts:2639 msgid "Export CSV" msgstr "" @@ -2868,13 +2873,13 @@ msgstr "" #: src/strings.ts:1261 msgid "Faced an issue or have a suggestion? Click here to create a bug report" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2405 +#: src/strings.ts:2406 msgid "Failed" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2639 +#: src/strings.ts:2643 msgid "Failed to attach file" msgstr "" @@ -2882,12 +2887,12 @@ msgstr "" msgid "Failed to copy note" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2684 +#: src/strings.ts:2688 msgid "Failed to copy to clipboard" msgstr "" #. placeholder {0}: message ? `: ${message}` : "" -#: src/strings.ts:2663 +#: src/strings.ts:2667 msgid "Failed to create API key{0}" msgstr "" @@ -2911,7 +2916,7 @@ msgstr "" msgid "Failed to install theme." msgstr "<<<<<<< HEAD" -#: src/strings.ts:2670 +#: src/strings.ts:2674 msgid "Failed to load API keys. Please try again." msgstr "" @@ -2931,7 +2936,7 @@ msgstr "" msgid "Failed to resolve download url" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2689 +#: src/strings.ts:2693 msgid "Failed to revoke API key" msgstr "" @@ -2965,9 +2970,9 @@ msgstr "" #: src/strings.ts:500 msgid "Fallback method for 2FA enabled" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2551 +#: src/strings.ts:2552 msgid "FAQs" msgstr "" @@ -2978,17 +2983,17 @@ msgstr "" #: src/strings.ts:321 #: src/strings.ts:1523 msgid "Favorites" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2549 +#: src/strings.ts:2550 msgid "Featured on" msgstr "" -#: src/strings.ts:2417 +#: src/strings.ts:2418 msgid "February 2022 Week 2" msgstr "" -#: src/strings.ts:2418 +#: src/strings.ts:2419 msgid "February 2022 Week 3" msgstr "" @@ -3026,9 +3031,9 @@ msgstr "" #: src/strings.ts:1835 msgid "Filter languages" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2606 +#: src/strings.ts:2610 msgid "Finish your purchase in the browser." msgstr "" @@ -3058,21 +3063,21 @@ msgstr "" #: src/strings.ts:1281 msgid "Follow us on X for updates and news about Notesnook" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2278 +#: src/strings.ts:2279 msgid "Font family" msgstr "" -#: src/strings.ts:2465 +#: src/strings.ts:2466 msgid "Font ligatures" msgstr "" -#: src/strings.ts:2279 +#: src/strings.ts:2280 msgid "Font size" msgstr "" -#: src/strings.ts:2523 +#: src/strings.ts:2524 msgid "For a monthly subscription, you can get a refund within 7 days of purchase. For a yearly subscription, we offer a full refund within 14 days of purchase. For a 5 year subscription, you can request a refund within 30 days of purchase." msgstr "" @@ -3082,9 +3087,9 @@ msgstr "" #: src/strings.ts:1769 msgid "for help regarding how to use the Notesnook Importer." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2532 +#: src/strings.ts:2533 msgid "for locking your notes as soon as app enters background" msgstr "" @@ -3113,13 +3118,13 @@ msgstr "" #: src/strings.ts:553 msgid "Forgot password?" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2566 +#: src/strings.ts:2567 msgid "Free {duration} day trial, cancel any time" msgstr "" -#: src/strings.ts:2470 +#: src/strings.ts:2471 msgid "Free plan" msgstr "" @@ -3129,13 +3134,13 @@ msgstr "" #: src/strings.ts:618 msgid "Friday" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2373 +#: src/strings.ts:2374 msgid "From code" msgstr "" -#: src/strings.ts:2370 +#: src/strings.ts:2371 msgid "From URL" msgstr "" @@ -3145,9 +3150,9 @@ msgstr "" #: src/strings.ts:2208 msgid "Full offline mode" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2325 +#: src/strings.ts:2326 msgid "Full screen" msgstr "" @@ -3177,9 +3182,9 @@ msgstr "" #: src/strings.ts:1369 msgid "Get Notesnook Pro to enable automatic backups" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2409 +#: src/strings.ts:2410 msgid "Get Priority support" msgstr "" @@ -3189,9 +3194,9 @@ msgstr "" #: src/strings.ts:563 msgid "Get started" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2529 +#: src/strings.ts:2530 msgid "Get this and so much more:" msgstr "" @@ -3209,13 +3214,13 @@ msgstr "" #: src/strings.ts:2164 msgid "GNU GENERAL PUBLIC LICENSE Version 3" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2607 +#: src/strings.ts:2611 msgid "Go back" msgstr "" -#: src/strings.ts:2448 +#: src/strings.ts:2449 msgid "Go back in tab" msgstr "" @@ -3225,9 +3230,9 @@ msgstr "" #: src/strings.ts:2228 msgid "Go back to tags" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2447 +#: src/strings.ts:2448 msgid "Go forward in tab" msgstr "" @@ -3249,15 +3254,11 @@ msgstr "" #: src/strings.ts:1306 msgid "Go to web app" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2540 +#: src/strings.ts:2541 msgid "Google will remind you 2 days before your trial ends." -msgstr "" - -#: src/strings.ts:2567 -msgid "Google will remind you before your trial ends" -msgstr "" +msgstr "<<<<<<< HEAD>>>>>>> master" #: src/strings.ts:586 msgid "Got it" @@ -3281,21 +3282,21 @@ msgstr "" #: src/strings.ts:2211 msgid "Having problems with sync?" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2555 +#: src/strings.ts:2556 msgid "hdImages" msgstr "" -#: src/strings.ts:2351 +#: src/strings.ts:2352 msgid "Heading {level}" msgstr "" -#: src/strings.ts:2280 +#: src/strings.ts:2281 msgid "Headings" msgstr "" -#: src/strings.ts:2386 +#: src/strings.ts:2387 msgid "Height" msgstr "" @@ -3317,9 +3318,9 @@ msgstr "" #: src/strings.ts:2170 msgid "Hide note title" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2283 +#: src/strings.ts:2284 msgid "Highlight" msgstr "" @@ -3337,9 +3338,9 @@ msgstr "" #: src/strings.ts:1319 msgid "Homepage changed to {name}" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2332 +#: src/strings.ts:2333 msgid "Horizontal rule" msgstr "" @@ -3353,9 +3354,9 @@ msgstr "" #: src/strings.ts:880 msgid "hr" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2500 +#: src/strings.ts:2501 msgid "I already have an account" msgstr "" @@ -3381,9 +3382,9 @@ msgstr "" #: src/strings.ts:1888 msgid "I have saved my key" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2426 +#: src/strings.ts:2427 msgid "I love cooking and collecting recipes." msgstr "" @@ -3435,21 +3436,21 @@ msgstr "" #: src/strings.ts:233 msgid "If you want to ask something in general or need some assistance, we would suggest that you" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2337 +#: src/strings.ts:2338 msgid "Image" msgstr "" #: src/strings.ts:1130 msgid "Image Compression" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2313 +#: src/strings.ts:2314 msgid "Image properties" msgstr "" -#: src/strings.ts:2309 +#: src/strings.ts:2310 msgid "Image settings" msgstr "" @@ -3475,9 +3476,9 @@ msgstr "" #: src/strings.ts:1753 msgid "Import completed" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2636 +#: src/strings.ts:2640 msgid "Import CSV" msgstr "" @@ -3485,15 +3486,15 @@ msgstr "" msgid "import guide" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2642 +#: src/strings.ts:2646 msgid "Inbox API" msgstr "" -#: src/strings.ts:2647 +#: src/strings.ts:2651 msgid "Inbox Keys" msgstr "" -#: src/strings.ts:2702 +#: src/strings.ts:2706 msgid "Inbox keys saved" msgstr "" @@ -3507,49 +3508,49 @@ msgstr "" #: src/strings.ts:784 msgid "Incorrect {type}" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2395 +#: src/strings.ts:2396 msgid "Increase {title}" msgstr "" -#: src/strings.ts:2237 +#: src/strings.ts:2238 msgid "Insert" msgstr "" -#: src/strings.ts:2392 +#: src/strings.ts:2393 msgid "Insert a {rows}x{columns} table" msgstr "" -#: src/strings.ts:2342 +#: src/strings.ts:2343 msgid "Insert a table" msgstr "" -#: src/strings.ts:2344 +#: src/strings.ts:2345 msgid "Insert an embed" msgstr "" -#: src/strings.ts:2338 +#: src/strings.ts:2339 msgid "Insert an image" msgstr "" -#: src/strings.ts:2290 +#: src/strings.ts:2291 msgid "Insert column left" msgstr "" -#: src/strings.ts:2291 +#: src/strings.ts:2292 msgid "Insert column right" msgstr "" -#: src/strings.ts:2235 +#: src/strings.ts:2236 msgid "Insert link" msgstr "" -#: src/strings.ts:2297 +#: src/strings.ts:2298 msgid "Insert row above" msgstr "" -#: src/strings.ts:2298 +#: src/strings.ts:2299 msgid "Insert row below" msgstr "" @@ -3575,17 +3576,17 @@ msgstr "" #: src/strings.ts:1484 msgid "Invalid email" -msgstr "<<<<<<< HEAD" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2682 +#: src/strings.ts:2686 msgid "Invalid password" msgstr "" -#: src/strings.ts:2701 +#: src/strings.ts:2705 msgid "Invalid PGP key pair. Please check your keys and try again." msgstr "" -#: src/strings.ts:2708 +#: src/strings.ts:2712 msgid "Invalid recovery key. Make sure to input your account recovery key, not a 2FA recovery code." msgstr "" @@ -3604,9 +3605,9 @@ msgstr "" #: src/strings.ts:275 msgid "It took us a year to bring Notesnook to life. Share your experience and suggestions to help us improve it." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2259 +#: src/strings.ts:2260 msgid "Italic" msgstr "" @@ -3671,19 +3672,19 @@ msgstr "" msgid "Keep your data safe" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2657 +#: src/strings.ts:2661 msgid "Key name" msgstr "" #: src/strings.ts:2130 msgid "Languages" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2232 +#: src/strings.ts:2233 msgid "Last edited at" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2690 +#: src/strings.ts:2694 msgid "Last used on" msgstr "" @@ -3729,29 +3730,29 @@ msgstr "" #: src/strings.ts:1722 msgid "Licensed under {license}" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2328 +#: src/strings.ts:2329 msgid "Lift list item" msgstr "" #: src/strings.ts:725 msgid "Light" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2358 +#: src/strings.ts:2359 msgid "Line {line}, Column {column}" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2618 +#: src/strings.ts:2622 msgid "Line height" msgstr "" #: src/strings.ts:1154 msgid "Line spacing changed" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2263 +#: src/strings.ts:2264 msgid "Link" msgstr "" @@ -3761,17 +3762,17 @@ msgstr "" #: src/strings.ts:931 msgid "Link notebooks" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2477 +#: src/strings.ts:2478 msgid "Link notes" msgstr "" -#: src/strings.ts:2268 +#: src/strings.ts:2269 msgid "Link settings" msgstr "" -#: src/strings.ts:2388 +#: src/strings.ts:2389 msgid "Link text" msgstr "" @@ -3812,7 +3813,7 @@ msgstr "" msgid "Loading {0}, please wait..." msgstr "<<<<<<< HEAD" -#: src/strings.ts:2669 +#: src/strings.ts:2673 msgid "Loading API keys..." msgstr "" @@ -3872,7 +3873,7 @@ msgstr "" msgid "Lock the app with a password or pin" msgstr "" -#: src/strings.ts:2703 +#: src/strings.ts:2707 msgid "Lock vault after" msgstr "" @@ -3922,9 +3923,9 @@ msgstr "" #: src/strings.ts:1364 msgid "Login to encrypt and sync notes" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2611 +#: src/strings.ts:2615 msgid "Login to upload attachments. [Read more](https://help.notesnook.com/faqs/login-to-upload-attachments)" msgstr "" @@ -3946,9 +3947,9 @@ msgstr "" #: src/strings.ts:1414 msgid "Long press on any item in list to enter multi-select mode." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2363 +#: src/strings.ts:2364 msgid "Make task list readonly" msgstr "" @@ -3998,21 +3999,21 @@ msgstr "" #: src/strings.ts:1167 msgid "Marketing emails" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2376 +#: src/strings.ts:2377 msgid "Match case" msgstr "" -#: src/strings.ts:2377 +#: src/strings.ts:2378 msgid "Match whole word" msgstr "" -#: src/strings.ts:2285 +#: src/strings.ts:2286 msgid "Math (inline)" msgstr "" -#: src/strings.ts:2335 +#: src/strings.ts:2336 msgid "Math & formulas" msgstr "" @@ -4022,17 +4023,17 @@ msgstr "" #: src/strings.ts:2072 msgid "Meet other privacy-minded people & talk to us directly about your concerns, issues and suggestions." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2419 +#: src/strings.ts:2420 msgid "Meetings" msgstr "" #: src/strings.ts:1781 msgid "Member since {date}" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2296 +#: src/strings.ts:2297 msgid "Merge cells" msgstr "" @@ -4094,22 +4095,19 @@ msgstr "" #: src/strings.ts:1419 msgid "Monographs enable you to share your notes in a secure and private way." -msgstr "" - -#: src/strings.ts:1842 -msgid "month" -msgstr "" +msgstr "<<<<<<< HEAD" #: src/strings.ts:665 +#: src/strings.ts:1842 msgid "Month" msgstr "" #: src/strings.ts:169 #: src/strings.ts:1572 msgid "Monthly" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2315 +#: src/strings.ts:2316 msgid "More" msgstr "" @@ -4119,17 +4117,17 @@ msgstr "" #: src/strings.ts:852 msgid "Move" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2364 +#: src/strings.ts:2365 msgid "Move all checked tasks to bottom" msgstr "" -#: src/strings.ts:2292 +#: src/strings.ts:2293 msgid "Move column left" msgstr "" -#: src/strings.ts:2293 +#: src/strings.ts:2294 msgid "Move column right" msgstr "" @@ -4139,13 +4137,13 @@ msgstr "" #: src/strings.ts:898 msgid "Move notes" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2300 +#: src/strings.ts:2301 msgid "Move row down" msgstr "" -#: src/strings.ts:2299 +#: src/strings.ts:2300 msgid "Move row up" msgstr "" @@ -4171,9 +4169,9 @@ msgstr "" #: src/strings.ts:1690 msgid "Native high-performance encryption" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2444 +#: src/strings.ts:2445 msgid "Navigate" msgstr "" @@ -4185,7 +4183,7 @@ msgstr "" msgid "Never ask again" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2693 +#: src/strings.ts:2697 msgid "Never expires" msgstr "" @@ -4197,7 +4195,7 @@ msgstr "" msgid "Never show again" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2691 +#: src/strings.ts:2695 msgid "Never used" msgstr "" @@ -4239,9 +4237,9 @@ msgstr "" #: src/strings.ts:576 msgid "New tab" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2450 +#: src/strings.ts:2451 msgid "New tag" msgstr "" @@ -4263,13 +4261,13 @@ msgstr "" #: src/strings.ts:552 msgid "Next" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2380 +#: src/strings.ts:2381 msgid "Next match" msgstr "" -#: src/strings.ts:2445 +#: src/strings.ts:2446 msgid "Next tab" msgstr "" @@ -4323,17 +4321,17 @@ msgstr "" #: src/strings.ts:176 msgid "No note history available for this device." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2494 +#: src/strings.ts:2495 msgid "No notebooks selected to move" msgstr "" #: src/strings.ts:202 msgid "No one can view this {type} except you." -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2614 +#: src/strings.ts:2618 msgid "No password" msgstr "" @@ -4425,9 +4423,9 @@ msgstr "" #: src/strings.ts:296 #: src/strings.ts:1522 msgid "Notebook" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2480 +#: src/strings.ts:2481 msgid "Notebook added" msgstr "" @@ -4443,9 +4441,9 @@ msgstr "" #: src/strings.ts:1796 msgid "NOTEBOOKS" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2242 +#: src/strings.ts:2243 msgid "Notebooks are the best way to organize your notes." msgstr "" @@ -4464,17 +4462,17 @@ msgstr "" #: src/strings.ts:1752 msgid "notes imported" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2544 +#: src/strings.ts:2545 msgid "Notesnook" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2599 +#: src/strings.ts:2603 msgid "Notesnook Circle" msgstr "" -#: src/strings.ts:2601 +#: src/strings.ts:2605 msgid "Notesnook Circle brings together trusted partners who share our commitment to privacy, transparency, and user freedom." msgstr "" @@ -4514,9 +4512,9 @@ msgstr "" #: src/strings.ts:1379 msgid "Notifications disabled" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2276 +#: src/strings.ts:2277 msgid "Numbered list" msgstr "" @@ -4532,7 +4530,7 @@ msgstr "" msgid "Offline" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2674 +#: src/strings.ts:2678 msgid "OK" msgstr "" @@ -4558,9 +4556,9 @@ msgstr "" #: src/strings.ts:736 msgid "Once your password is changed, please make sure to save the new account recovery key" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2562 +#: src/strings.ts:2563 msgid "One time purchase, no auto-renewal" msgstr "" @@ -4582,17 +4580,17 @@ msgstr "" #: src/strings.ts:1308 msgid "Open in browser to manage subscription" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2326 +#: src/strings.ts:2327 msgid "Open in new tab" msgstr "" #: src/strings.ts:579 msgid "Open issue" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2266 +#: src/strings.ts:2267 msgid "Open link" msgstr "" @@ -4602,9 +4600,9 @@ msgstr "" #: src/strings.ts:1382 msgid "Open settings" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2327 +#: src/strings.ts:2328 msgid "Open source" msgstr "" @@ -4647,17 +4645,17 @@ msgstr "" #: src/strings.ts:2147 msgid "Other" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2347 +#: src/strings.ts:2348 msgid "Outline list" msgstr "" -#: src/strings.ts:2350 +#: src/strings.ts:2351 msgid "Paragraph" msgstr "" -#: src/strings.ts:2493 +#: src/strings.ts:2494 msgid "Paragraphs" msgstr "" @@ -4667,9 +4665,9 @@ msgstr "" #: src/strings.ts:44 msgid "Partially refunded" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2404 +#: src/strings.ts:2405 msgid "Passed" msgstr "" @@ -4707,29 +4705,29 @@ msgstr "" #: src/strings.ts:2083 msgid "Password/pin" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2250 +#: src/strings.ts:2251 msgid "Paste" msgstr "" -#: src/strings.ts:2251 +#: src/strings.ts:2252 msgid "Paste and match style" msgstr "" -#: src/strings.ts:2372 +#: src/strings.ts:2373 msgid "Paste embed code here. Only iframes are supported." msgstr "" -#: src/strings.ts:2387 +#: src/strings.ts:2388 msgid "Paste image URL here" msgstr "" -#: src/strings.ts:2252 +#: src/strings.ts:2253 msgid "Paste without formatting" msgstr "" -#: src/strings.ts:2563 +#: src/strings.ts:2564 msgid "Pay once and use for 5 years" msgstr "" @@ -4767,13 +4765,13 @@ msgstr "" #: src/strings.ts:523 msgid "Pinned" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2581 +#: src/strings.ts:2585 msgid "Plan limits" msgstr "" -#: src/strings.ts:2544 +#: src/strings.ts:2545 msgid "Plans" msgstr "" @@ -4783,10 +4781,10 @@ msgstr "" #: src/strings.ts:1004 msgid "Please confirm your identity by entering a recovery code." -msgstr "" +msgstr "<<<<<<< HEAD" #: src/strings.ts:983 -#: src/strings.ts:2234 +#: src/strings.ts:2235 msgid "Please confirm your identity by entering the authentication code from your authenticator app." msgstr "" @@ -4807,7 +4805,7 @@ msgstr "" msgid "Please enable automatic backups to avoid losing important data." msgstr "<<<<<<< HEAD" -#: src/strings.ts:2660 +#: src/strings.ts:2664 msgid "Please enter a key name" msgstr "" @@ -4829,9 +4827,9 @@ msgstr "" #: src/strings.ts:1622 msgid "Please enter password of this backup file" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2245 +#: src/strings.ts:2246 msgid "Please enter the password to decrypt and restore this backup." msgstr "" @@ -4847,7 +4845,7 @@ msgstr "" msgid "Please enter the password to view this version" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2680 +#: src/strings.ts:2684 msgid "Please enter your account password to view this API key." msgstr "" @@ -4893,9 +4891,9 @@ msgstr "" #: src/strings.ts:1398 msgid "please send us an email from your registered email address" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2393 +#: src/strings.ts:2394 msgid "Please set a table size" msgstr "" @@ -4999,21 +4997,21 @@ msgstr "" #: src/strings.ts:2172 msgid "Prevent note title from appearing in tab/window title." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2314 +#: src/strings.ts:2315 msgid "Preview attachment" msgstr "" #: src/strings.ts:182 msgid "Preview not available, content is encrypted." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2381 +#: src/strings.ts:2382 msgid "Previous match" msgstr "" -#: src/strings.ts:2446 +#: src/strings.ts:2447 msgid "Previous tab" msgstr "" @@ -5039,9 +5037,9 @@ msgstr "" #: src/strings.ts:1182 msgid "Privacy mode" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2576 +#: src/strings.ts:2580 msgid "privacy policy" msgstr "" @@ -5057,7 +5055,7 @@ msgstr "" msgid "private analytics and bug reports." msgstr "<<<<<<< HEAD" -#: src/strings.ts:2699 +#: src/strings.ts:2703 msgid "Private Key:" msgstr "" @@ -5071,9 +5069,9 @@ msgstr "" #: src/strings.ts:1723 msgid "Pro" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2471 +#: src/strings.ts:2472 msgid "Pro plan" msgstr "" @@ -5109,7 +5107,7 @@ msgstr "" msgid "Proxy" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2698 +#: src/strings.ts:2702 msgid "Public Key:" msgstr "" @@ -5119,9 +5117,9 @@ msgstr "" #: src/strings.ts:487 msgid "Publish note" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2615 +#: src/strings.ts:2619 msgid "Publish to the web" msgstr "" @@ -5143,9 +5141,9 @@ msgstr "" #: src/strings.ts:271 msgid "Published note link will be automatically deleted once it is viewed by someone." -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2569 +#: src/strings.ts:2573 msgid "Purchase" msgstr "" @@ -5159,17 +5157,17 @@ msgstr "" #: src/strings.ts:1694 msgid "Quick note widgets" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2442 +#: src/strings.ts:2443 msgid "Quick open" msgstr "" #: src/strings.ts:1245 msgid "Quickly create a note from the notification" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2334 +#: src/strings.ts:2335 msgid "Quote" msgstr "" @@ -5207,9 +5205,9 @@ msgstr "" #: src/strings.ts:1618 msgid "Reading backup file..." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2546 +#: src/strings.ts:2547 msgid "Ready to take the next step on your private note taking journey?" msgstr "" @@ -5219,29 +5217,29 @@ msgstr "" #: src/strings.ts:1613 msgid "RECENT BACKUPS" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2457 +#: src/strings.ts:2458 msgid "Recents" msgstr "" -#: src/strings.ts:2400 +#: src/strings.ts:2401 msgid "Recheck all" msgstr "" #: src/strings.ts:2003 msgid "Rechecking failed" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2425 +#: src/strings.ts:2426 msgid "Recipes" msgstr "" #: src/strings.ts:140 msgid "Recommended" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2548 +#: src/strings.ts:2549 msgid "Recommended by Privacy Guides" msgstr "" @@ -5279,21 +5277,21 @@ msgstr "" #: src/strings.ts:1918 msgid "Recovery successful!" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2437 +#: src/strings.ts:2438 msgid "Redeem" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2598 +#: src/strings.ts:2602 msgid "Redeem code" msgstr "" -#: src/strings.ts:2434 +#: src/strings.ts:2435 msgid "Redeem gift code" msgstr "" -#: src/strings.ts:2436 +#: src/strings.ts:2437 msgid "Redeeming gift code" msgstr "" @@ -5319,9 +5317,9 @@ msgstr "" #: src/strings.ts:432 msgid "Release notes" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2459 +#: src/strings.ts:2460 msgid "Release track" msgstr "" @@ -5413,9 +5411,9 @@ msgstr "" #: src/strings.ts:896 msgid "Remove as default" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2318 +#: src/strings.ts:2319 msgid "Remove attachment" msgstr "" @@ -5425,17 +5423,17 @@ msgstr "" #: src/strings.ts:906 msgid "Remove from notebook" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2458 +#: src/strings.ts:2459 msgid "Remove from recents" msgstr "" #: src/strings.ts:1046 msgid "Remove full name" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2265 +#: src/strings.ts:2266 msgid "Remove link" msgstr "" @@ -5465,13 +5463,13 @@ msgstr "" #: src/strings.ts:335 msgid "Repeats daily at {date}" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2378 +#: src/strings.ts:2379 msgid "Replace" msgstr "" -#: src/strings.ts:2379 +#: src/strings.ts:2380 msgid "Replace all" msgstr "" @@ -5506,9 +5504,9 @@ msgstr "" #: src/strings.ts:1914 msgid "Reset account password" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2485 +#: src/strings.ts:2486 msgid "Reset homepage" msgstr "" @@ -5558,9 +5556,9 @@ msgstr "" #: src/strings.ts:1237 msgid "Restore backup" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2407 +#: src/strings.ts:2408 msgid "Restore backup?" msgstr "" @@ -5604,7 +5602,7 @@ msgstr "" msgid "Resubscribe to Pro" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2671 +#: src/strings.ts:2675 msgid "Retry" msgstr "" @@ -5624,7 +5622,7 @@ msgstr "" msgid "Revoke biometric unlocking" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2685 +#: src/strings.ts:2689 msgid "Revoke Inbox API Key - {name}" msgstr "" @@ -5646,9 +5644,9 @@ msgstr "" #: src/strings.ts:2030 msgid "Rotate right" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2288 +#: src/strings.ts:2289 msgid "Row properties" msgstr "" @@ -5726,13 +5724,13 @@ msgstr "" #: src/strings.ts:499 msgid "Save your recovery codes in a safe place. You will need them to recover your account in case you lose access to your two-factor authentication methods." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2397 +#: src/strings.ts:2398 msgid "Saved" msgstr "" -#: src/strings.ts:2398 +#: src/strings.ts:2399 msgid "Saving" msgstr "" @@ -5750,17 +5748,17 @@ msgstr "" #: src/strings.ts:1724 msgid "Scan the QR code with your authenticator app" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2423 +#: src/strings.ts:2424 msgid "School work" msgstr "" -#: src/strings.ts:2496 +#: src/strings.ts:2497 msgid "Scroll to bottom" msgstr "" -#: src/strings.ts:2495 +#: src/strings.ts:2496 msgid "Scroll to top" msgstr "" @@ -5775,9 +5773,9 @@ msgstr "" #: src/strings.ts:1505 msgid "Search a note to link to" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2439 +#: src/strings.ts:2440 msgid "Search for notes, notebooks, and tags..." msgstr "" @@ -5831,9 +5829,9 @@ msgstr "" #: src/strings.ts:32 msgid "Search in Trash" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2360 +#: src/strings.ts:2361 msgid "Search languages" msgstr "" @@ -5879,9 +5877,9 @@ msgstr "" #: src/strings.ts:1611 msgid "Select a backup file from your device to restore backup" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2490 +#: src/strings.ts:2491 msgid "Select a notebook to move this notebook into, or unselect to move it to the root level." msgstr "" @@ -5923,9 +5921,9 @@ msgstr "" #: src/strings.ts:112 msgid "Select how you would like to recieve the code" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2355 +#: src/strings.ts:2356 msgid "Select language" msgstr "" @@ -5939,9 +5937,9 @@ msgstr "" #: src/strings.ts:460 msgid "Select notebooks you want to add note(s) to." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2478 +#: src/strings.ts:2479 msgid "Select notes to link to \"{title}\"" msgstr "" @@ -5951,9 +5949,9 @@ msgstr "" #: src/strings.ts:1819 msgid "Select profile picture" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2484 +#: src/strings.ts:2485 msgid "Select the default sidebar tab" msgstr "" @@ -5963,9 +5961,9 @@ msgstr "" #: src/strings.ts:2132 msgid "Select the languages the spell checker should check in." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2460 +#: src/strings.ts:2461 msgid "Select the release track for Notesnook." msgstr "" @@ -6055,9 +6053,9 @@ msgstr "" #: src/strings.ts:897 msgid "Set as default" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2482 +#: src/strings.ts:2483 msgid "Set as homepage" msgstr "" @@ -6067,9 +6065,9 @@ msgstr "" #: src/strings.ts:1335 msgid "Set automatic trash cleanup interval from Settings > Behaviour > Clean trash interval." -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2632 +#: src/strings.ts:2636 msgid "Set expiry" msgstr "" @@ -6171,7 +6169,7 @@ msgstr "" msgid "Share Notesnook with friends!" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2644 +#: src/strings.ts:2648 msgid "Share things to Notesbook from anywhere using the Inbox API" msgstr "" @@ -6213,9 +6211,9 @@ msgstr "" #: src/strings.ts:49 msgid "Silent" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2329 +#: src/strings.ts:2330 msgid "Sink list item" msgstr "" @@ -6257,25 +6255,25 @@ msgstr "" #: src/strings.ts:2151 msgid "Source code" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2356 +#: src/strings.ts:2357 msgid "Spaces" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2591 +#: src/strings.ts:2595 msgid "Special Offer" msgstr "" #: src/strings.ts:2128 msgid "Spell check" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2295 +#: src/strings.ts:2296 msgid "Split cells" msgstr "" -#: src/strings.ts:2461 +#: src/strings.ts:2462 msgid "Stable" msgstr "" @@ -6317,17 +6315,17 @@ msgstr "" #: src/strings.ts:2224 msgid "Status" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2474 +#: src/strings.ts:2475 msgid "Storage" msgstr "" #: src/strings.ts:1550 msgid "Streaming not supported" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2261 +#: src/strings.ts:2262 msgid "Strikethrough" msgstr "" @@ -6341,13 +6339,13 @@ msgstr "" #: src/strings.ts:580 msgid "Submit" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2570 +#: src/strings.ts:2574 msgid "Subscribe" msgstr "" -#: src/strings.ts:2571 +#: src/strings.ts:2575 msgid "Subscribe and start free trial" msgstr "" @@ -6373,9 +6371,9 @@ msgstr "" #: src/strings.ts:720 msgid "Subscribed using gift card" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2272 +#: src/strings.ts:2273 msgid "Subscript" msgstr "" @@ -6397,9 +6395,9 @@ msgstr "" #: src/strings.ts:613 msgid "Sunday" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2273 +#: src/strings.ts:2274 msgid "Superscript" msgstr "" @@ -6453,21 +6451,21 @@ msgstr "" #: src/strings.ts:1704 msgid "Syncing your notes" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2341 +#: src/strings.ts:2342 msgid "Table" msgstr "" #: src/strings.ts:538 msgid "Table of contents" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2286 +#: src/strings.ts:2287 msgid "Table settings" msgstr "" -#: src/strings.ts:2535 +#: src/strings.ts:2536 msgid "tables, outlines, block level note linking" msgstr "" @@ -6502,9 +6500,9 @@ msgstr "" #: src/strings.ts:1219 msgid "Take a partial backup of your data that does not include attachments" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2340 +#: src/strings.ts:2341 msgid "Take a photo using camera" msgstr "" @@ -6562,13 +6560,13 @@ msgstr "" #: src/strings.ts:277 msgid "Tap twice to confirm you have saved the recovery key." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2346 +#: src/strings.ts:2347 msgid "Task list" msgstr "" -#: src/strings.ts:2416 +#: src/strings.ts:2417 msgid "Tasks" msgstr "" @@ -6597,9 +6595,9 @@ msgstr "" #: src/strings.ts:102 msgid "Terms of Service " -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2578 +#: src/strings.ts:2582 msgid "terms of use." msgstr "" @@ -6609,13 +6607,13 @@ msgstr "" #: src/strings.ts:1647 msgid "Test connection before changing server urls" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2284 +#: src/strings.ts:2285 msgid "Text color" msgstr "" -#: src/strings.ts:2282 +#: src/strings.ts:2283 msgid "Text direction" msgstr "" @@ -6625,13 +6623,13 @@ msgstr "" #: src/strings.ts:2052 msgid "Thank you for reporting!" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2552 +#: src/strings.ts:2553 msgid "Thank you for subscribing" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2586 +#: src/strings.ts:2590 msgid "Thank you for the purchase" msgstr "" @@ -6645,17 +6643,17 @@ msgstr "" #: src/strings.ts:1645 msgid "The {title} at {url} is not compatible with this client." -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2631 +#: src/strings.ts:2635 msgid "The incoming note could not be unlocked with the provided password. Enter the correct password for the incoming note" msgstr "" #: src/strings.ts:231 msgid "The information above will be publically available at" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2605 +#: src/strings.ts:2609 msgid "The Notesnook Circle is exclusive to subscribers. Please consider subscribing to gain access to Notesnook Circle and enjoy additional benefits." msgstr "" @@ -6689,9 +6687,9 @@ msgstr "" #: src/strings.ts:283 msgid "There are no blocks in this note." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2239 +#: src/strings.ts:2240 msgid "These items will be **kept in your Trash for {interval} days** after which they will be permanently deleted." msgstr "" @@ -6725,17 +6723,17 @@ msgstr "" #: src/strings.ts:1683 msgid "This error usually means the search index is corrupted." -msgstr "<<<<<<< HEAD" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2709 +#: src/strings.ts:2713 msgid "This feature is not available on this plan." msgstr "" #: src/strings.ts:1936 msgid "This image cannot be previewed" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2572 +#: src/strings.ts:2576 msgid "This is a one time purchase, no subscription." msgstr "" @@ -6746,9 +6744,9 @@ msgstr "" #: src/strings.ts:1103 #: src/strings.ts:1112 msgid "This must only be used for troubleshooting. Using it regularly for sync is not recommended and will lead to unexpected data loss and other issues. If you are having persistent issues with sync, please report them to us at support@streetwriters.co." -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2637 +#: src/strings.ts:2641 msgid "This note is empty" msgstr "" @@ -6815,21 +6813,21 @@ msgstr "" #: src/strings.ts:1814 msgid "Toggle dark/light mode" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2464 +#: src/strings.ts:2465 msgid "Toggle focus mode" msgstr "" -#: src/strings.ts:2353 +#: src/strings.ts:2354 msgid "Toggle indentation mode" msgstr "" -#: src/strings.ts:2382 +#: src/strings.ts:2383 msgid "Toggle replace" msgstr "" -#: src/strings.ts:2453 +#: src/strings.ts:2454 msgid "Toggle theme" msgstr "" @@ -6856,9 +6854,9 @@ msgstr "" #: src/strings.ts:1331 msgid "Trash gets automatically cleaned up daily" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2542 +#: src/strings.ts:2543 msgid "Try {plan} for free" msgstr "" @@ -6868,9 +6866,9 @@ msgstr "" #: src/strings.ts:1826 msgid "Try free for 14 days" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2528 +#: src/strings.ts:2529 msgid "Try it for free" msgstr "" @@ -6924,13 +6922,13 @@ msgstr "" #: src/strings.ts:1554 msgid "Unable to send 2FA code" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2488 +#: src/strings.ts:2489 msgid "Unarchive" msgstr "" -#: src/strings.ts:2260 +#: src/strings.ts:2261 msgid "Underline" msgstr "" @@ -6940,9 +6938,9 @@ msgstr "" #: src/strings.ts:854 msgid "Unfavorite" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2582 +#: src/strings.ts:2586 msgid "Unlimited" msgstr "" @@ -6956,9 +6954,9 @@ msgstr "" #: src/strings.ts:157 msgid "Unlock" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2629 +#: src/strings.ts:2633 msgid "Unlock incoming note" msgstr "" @@ -6973,9 +6971,9 @@ msgstr "" #: src/strings.ts:888 msgid "Unlock note to delete it" -msgstr "<<<<<<< HEAD" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2640 +#: src/strings.ts:2644 msgid "Unlock note to merge conflicts" msgstr "" @@ -7025,14 +7023,14 @@ msgstr "" #: src/strings.ts:2088 msgid "Unregister" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2633 +#: src/strings.ts:2637 msgid "Unset expiry" msgstr "" #: src/strings.ts:210 -#: src/strings.ts:2362 +#: src/strings.ts:2363 msgid "Untitled" msgstr "" @@ -7046,21 +7044,21 @@ msgstr "" #: src/strings.ts:1372 msgid "Update now" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2502 +#: src/strings.ts:2503 msgid "Upgrade" msgstr "" #: src/strings.ts:1920 msgid "Upgrade now" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2501 +#: src/strings.ts:2502 msgid "Upgrade plan" msgstr "" -#: src/strings.ts:2527 +#: src/strings.ts:2528 msgid "Upgrade plan to {plan} to use this feature." msgstr "" @@ -7074,17 +7072,17 @@ msgstr "" #: src/strings.ts:749 msgid "Upgrade to Pro" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2597 +#: src/strings.ts:2601 msgid "Upgrade to redeem" msgstr "" #: src/strings.ts:510 msgid "Upload" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2339 +#: src/strings.ts:2340 msgid "Upload from disk" msgstr "" @@ -7108,9 +7106,9 @@ msgstr "" #: src/strings.ts:51 msgid "Urgent" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2389 +#: src/strings.ts:2390 msgid "URL" msgstr "" @@ -7132,9 +7130,9 @@ msgstr "" #: src/strings.ts:556 msgid "Use account password" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2534 +#: src/strings.ts:2535 msgid "Use advanced note taking features like" msgstr "" @@ -7193,29 +7191,29 @@ msgstr "" #: src/strings.ts:1110 msgid "Use this if changes made on this device are not appearing on other devices. This will overwrite the data on the server with the data from this device." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2475 +#: src/strings.ts:2476 msgid "used" msgstr "" #: src/strings.ts:1020 msgid "User verification failed" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2256 +#: src/strings.ts:2257 msgid "Using {instance} (v{version})" msgstr "" -#: src/strings.ts:2254 +#: src/strings.ts:2255 msgid "Using official Notesnook instance" msgstr "" #: src/strings.ts:1711 msgid "v{version} available" -msgstr "<<<<<<< HEAD" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2711 +#: src/strings.ts:2715 msgid "Value must be between {min} and {max}" msgstr "" @@ -7287,11 +7285,11 @@ msgstr "" msgid "View all linked notebooks" msgstr "<<<<<<< HEAD" -#: src/strings.ts:2649 +#: src/strings.ts:2653 msgid "View and edit your inbox public/private key pair" msgstr "" -#: src/strings.ts:2655 +#: src/strings.ts:2659 msgid "View and manage inbox API keys" msgstr "" @@ -7313,9 +7311,9 @@ msgstr "" #: src/strings.ts:1064 msgid "View your recovery codes to recover your account in case you lose access to your two-factor authentication methods." -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2612 +#: src/strings.ts:2616 msgid "Views" msgstr "" @@ -7341,9 +7339,9 @@ msgstr "" #: src/strings.ts:1392 msgid "We have sent you an email confirmation link. Please check your email inbox. If you cannot find the email, check your spam folder." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2513 +#: src/strings.ts:2514 msgid "We require credit card details to fight abuse and to make it seamless for you to upgrade. Your credit card is NOT charged until your free trial ends and your subscription starts. You will be notified via email of the upcoming charge before your trial ends." msgstr "" @@ -7357,13 +7355,13 @@ msgstr "" #: src/strings.ts:1356 msgid "We would love to know what you think!" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2554 +#: src/strings.ts:2555 msgid "We’re setting up your plan right now. We’ll notify you as soon as everything is ready." msgstr "" -#: src/strings.ts:2324 +#: src/strings.ts:2325 msgid "Web clip settings" msgstr "" @@ -7381,9 +7379,9 @@ msgstr "" #: src/strings.ts:664 msgid "Week" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2625 +#: src/strings.ts:2629 msgid "Week format" msgstr "" @@ -7398,9 +7396,9 @@ msgstr "" #: src/strings.ts:1890 msgid "Welcome back!" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2585 +#: src/strings.ts:2589 msgid "Welcome to Notesnook {plan}" msgstr "" @@ -7410,33 +7408,33 @@ msgstr "" #: src/strings.ts:1394 msgid "What do I do if I am not getting the email?" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2505 +#: src/strings.ts:2506 msgid "What happens to my data if I switch plans?" msgstr "" -#: src/strings.ts:2521 +#: src/strings.ts:2522 msgid "What is your refund policy?" msgstr "" #: src/strings.ts:1669 msgid "What went wrong?" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2511 +#: src/strings.ts:2512 msgid "Why do you need my credit card details for a free trial?" msgstr "" -#: src/strings.ts:2385 +#: src/strings.ts:2386 msgid "Width" msgstr "" -#: src/strings.ts:2491 +#: src/strings.ts:2492 msgid "Words" msgstr "" -#: src/strings.ts:2414 +#: src/strings.ts:2415 msgid "Work & Office" msgstr "" @@ -7467,21 +7465,21 @@ msgstr "" #: src/strings.ts:548 msgid "Yes" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2518 +#: src/strings.ts:2519 msgid "Yes, you can cancel your trial anytime. No questions asked." msgstr "" #: src/strings.ts:106 msgid "You also agree to recieve marketing emails from us which you can opt-out of from app settings." -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2590 +#: src/strings.ts:2594 msgid "You are already subscribed to this plan." msgstr "" -#: src/strings.ts:2241 +#: src/strings.ts:2242 msgid "You are editing \"{notebookTitle}\"." msgstr "" @@ -7507,13 +7505,13 @@ msgstr "" #: src/strings.ts:2066 msgid "You can change the theme at any time from Settings or the side menu." -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2593 +#: src/strings.ts:2597 msgid "You can change your subscription plan from the web app" msgstr "" -#: src/strings.ts:2422 +#: src/strings.ts:2423 msgid "You can create shortcuts of frequently accessed notebooks in the side menu" msgstr "" @@ -7572,9 +7570,9 @@ msgstr "" #: src/strings.ts:2194 msgid "You have been logged out." -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2589 +#: src/strings.ts:2593 msgid "You have made a one time purchase. To change your plan please contact support." msgstr "" @@ -7673,9 +7671,9 @@ msgstr "" #: src/strings.ts:962 msgid "Your archive" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2487 +#: src/strings.ts:2488 msgid "Your archive is empty" msgstr "" @@ -7693,9 +7691,9 @@ msgstr "" #: src/strings.ts:2101 msgid "Your current 2FA method is {method}" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2596 +#: src/strings.ts:2600 msgid "Your current subscription does not allow changing plans" msgstr "" @@ -7705,17 +7703,17 @@ msgstr "" #: src/strings.ts:1856 msgid "Your data recovery key will be used to decrypt your data" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2507 +#: src/strings.ts:2508 msgid "Your data remains 100% accessible regardless of what plan you are on. That includes your notes, notebooks, attachments, and anything else you might have created." msgstr "" #: src/strings.ts:1786 msgid "Your email has been confirmed." -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2498 +#: src/strings.ts:2499 msgid "Your email has been confirmed. You can now securely sync your encrypted notes across all devices." msgstr "" @@ -7741,9 +7739,9 @@ msgstr "" #: src/strings.ts:1405 msgid "Your free trial is ending soon" -msgstr "" +msgstr "<<<<<<< HEAD<<<<<<< HEAD" -#: src/strings.ts:2624 +#: src/strings.ts:2628 msgid "Your free trial is on-going. Your subscription will start on {trialExpiryDate}" msgstr "" @@ -7825,9 +7823,9 @@ msgstr "" #: src/strings.ts:793 msgid "Zipping" -msgstr "" +msgstr "<<<<<<< HEAD" -#: src/strings.ts:2463 +#: src/strings.ts:2464 msgid "Zoom" msgstr "" diff --git a/packages/intl/src/strings.ts b/packages/intl/src/strings.ts index 2fe25f4a1..655452bc5 100644 --- a/packages/intl/src/strings.ts +++ b/packages/intl/src/strings.ts @@ -1839,7 +1839,7 @@ For example: incomingNote: () => t`Incoming note`, description: () => t`Description`, date: () => t`Date`, - month: () => t`month`, + month: () => t`Month`, day: () => t`Day`, time: () => t`Time`, encryptionKey: () => t`Encryption key`, @@ -2227,7 +2227,8 @@ Use this if changes from other devices are not appearing on this device. This wi goBackToNotebooks: () => t`Go back to notebooks`, goBackToTags: () => t`Go back to tags`, okay: () => t`Okay`, - clearTrashDesc: () => t`Do you want to clear the trash?`, + clearTrashDesc: () => + t`Clearing trash will permanently delete all the items in your trash. This action is IRREVERSIBLE.`, createdAt: () => t`Created at`, lastEditedAt: () => t`Last edited at`, enter6DigitCode: () => @@ -2564,7 +2565,10 @@ Use this if changes from other devices are not appearing on this device. This wi ], trialPlanConditions: [ (duration: number) => t`Free ${duration} day trial, cancel any time`, - () => t`Google will remind you before your trial ends` + (platform: "ios" | "android") => + t`${ + platform === "ios" ? "Apple" : "Google" + } will remind you before your trial ends` ], purchase: () => t`Purchase`, subscribe: () => t`Subscribe`,