mobile: refactor

This commit is contained in:
ammarahm-ed
2023-04-25 10:18:20 +05:00
parent 909bdfa0cf
commit 8548940cb9
7 changed files with 49 additions and 138 deletions

View File

@@ -36,7 +36,11 @@ function getFileExtension(filename) {
var ext = /^.+\.([^.]+)$/.exec(filename);
return ext == null ? "" : ext[1];
}
/**
*
* @param {any} param0
* @returns
*/
export const AttachmentItem = ({ attachment, encryption, setAttachments }) => {
const colors = useThemeStore((state) => state.colors);
const [currentProgress, setCurrentProgress] = useAttachmentProgress(

View File

@@ -17,35 +17,46 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { useEffect, useState } from "react";
import { useState } from "react";
import { useAttachmentStore } from "../stores/use-attachment-store";
export const useAttachmentProgress = (attachment, encryption) => {
type AttachmentProgress = {
type: string;
value?: number;
percent?: string;
};
export const useAttachmentProgress = (
attachment: any,
encryption?: boolean
) => {
const progress = useAttachmentStore((state) => state.progress);
const [currentProgress, setCurrentProgress] = useState(
const [currentProgress, setCurrentProgress] = useState<
AttachmentProgress | undefined
>(
encryption
? {
type: "encrypt"
}
: null
: undefined
);
useEffect(() => {
let prog = progress[attachment.metadata.hash];
if (prog) {
let type = prog.type;
let loaded = prog.type === "download" ? prog.recieved : prog.sent;
prog = loaded / prog.total;
prog = (prog * 100).toFixed(0);
setCurrentProgress({
value: prog,
percent: prog + "%",
type: type
});
} else {
setCurrentProgress(null);
}
}, [attachment.metadata.hash, progress]);
const attachmentProgress = progress?.[attachment.metadata.hash];
if (attachmentProgress) {
const type = attachmentProgress.type;
const loaded =
attachmentProgress.type === "download"
? attachmentProgress.recieved
: attachmentProgress.sent;
const value = loaded / attachmentProgress.total;
setCurrentProgress({
value: value * 100,
percent: (value * 100).toFixed(0) + "%",
type: type
});
} else {
setCurrentProgress(undefined);
}
return [currentProgress, setCurrentProgress];
};

View File

@@ -1,61 +0,0 @@
/*
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 <http://www.gnu.org/licenses/>.
*/
import React, { useCallback, useEffect } from "react";
import BiometicService from "../services/biometrics";
import { eSubscribeEvent, eUnSubscribeEvent } from "../services/event-manager";
import { db } from "../common/database";
const VaultStatusCache = {
exists: false,
biometryEnrolled: false,
isBiometryAvailable: false
};
export const useVaultStatus = () => {
const [vaultStatus, setVaultStatus] = React.useState(VaultStatusCache);
const checkVaultStatus = useCallback(() => {
db.vault.exists().then(async (exists) => {
let available = await BiometicService.isBiometryAvailable();
let fingerprint = await BiometicService.hasInternetCredentials();
if (
VaultStatusCache.exists === exists &&
VaultStatusCache.biometryEnrolled === fingerprint &&
VaultStatusCache.isBiometryAvailable === available
)
return;
setVaultStatus({
exists: exists,
biometryEnrolled: fingerprint,
isBiometryAvailable: available ? true : false
});
});
}, []);
useEffect(() => {
checkVaultStatus();
eSubscribeEvent("vaultUpdated", () => checkVaultStatus());
return () => {
eUnSubscribeEvent("vaultUpdated", () => checkVaultStatus());
};
}, [checkVaultStatus]);
return vaultStatus;
};

View File

@@ -27,14 +27,6 @@ import { DatabaseLogger } from "../common/database/index";
import { ToastEvent } from "./event-manager";
import SettingsService from "./settings";
NetInfo.configure({
reachabilityUrl: "https://notesnook.com",
reachabilityTest: (response) => {
if (!response) return false;
return response?.status >= 200 && response?.status < 300;
}
});
export const ignoredMessages = [
"Sync already running",
"Not allowed to start service intent",

View File

@@ -24,7 +24,6 @@ import { db } from "../common/database";
import { MMKV } from "../common/database/mmkv";
import PremiumService from "../services/premium";
import { SUBSCRIPTION_STATUS } from "../utils/constants";
import layoutmanager from "../utils/layout-manager";
export interface MessageStore extends State {
message: Message;
setMessage: (message: Message) => void;
@@ -96,13 +95,7 @@ export const useMessageStore = create<MessageStore>((set, get) => ({
icon: "account-outline"
},
setMessage: (message) => {
setTimeout(() => {
if (get().message.visible || message.visible) {
layoutmanager.withAnimation();
}
set({ message: { ...message } });
}, 1);
set({ message: { ...message } });
},
announcements: [],
remove: async (id) => {

View File

@@ -1,31 +0,0 @@
/*
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 <http://www.gnu.org/licenses/>.
*/
function withAnimation(_duration = 300) {
return;
}
function withSpringAnimation(_duration = 300) {
return;
}
export default {
withAnimation,
withSpringAnimation
};

View File

@@ -46,18 +46,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* @return {String} Sanitized filename
*/
var illegalRe = /[/?<>\\:*|"]/g;
const illegalRe = /[/?<>\\:*|"]/g;
//var controlRe = /[x00-x1f\x80-\x9f]/g;
var reservedRe = /^\.+$/;
var windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i;
var windowsTrailingRe = /[. ]+$/;
var whitespace = /\s+/g;
const reservedRe = /^\.+$/;
const windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i;
const windowsTrailingRe = /[. ]+$/;
const whitespace = /\s+/g;
function sanitize(input, replacement) {
function sanitize(input: string, replacement: string) {
if (typeof input !== "string") {
throw new Error("Input must be string");
}
var sanitized = input
const sanitized = input
.replace(whitespace, replacement)
.replace(illegalRe, replacement)
.replace(reservedRe, replacement)
@@ -67,7 +67,10 @@ function sanitize(input, replacement) {
return sanitized.slice(0, 254).toLowerCase();
}
export function sanitizeFilename(input, options) {
var replacement = (options && options.replacement) || "";
export function sanitizeFilename(
input: string,
options: { replacement: string }
) {
const replacement = (options && options.replacement) || "";
return sanitize(input, replacement);
}