mobile: refactor goToPage

This commit is contained in:
Ammar Ahmed
2025-02-06 11:03:16 +05:00
committed by Abdullah Atta
parent 2df852f1b8
commit dd80594594
12 changed files with 26 additions and 25 deletions

View File

@@ -553,7 +553,7 @@ export class VaultDialog extends Component {
item: note
});
if (!DDS.isTab) {
fluidTabsRef.current?.goToPage(1);
fluidTabsRef.current?.goToPage("editor");
}
});
}

View File

@@ -53,14 +53,16 @@ interface TabProps extends ViewProps {
onDrawerStateChange: (state: boolean) => void;
}
type FluidTabPage = "home" | "editor";
export interface TabsRef {
goToPage: (page: number, animated?: boolean) => void;
goToPage: (page: FluidTabPage, animated?: boolean) => void;
goToIndex: (index: number, animated?: boolean) => 0 | undefined;
unlock: () => boolean;
lock: () => boolean;
openDrawer: (animated?: boolean) => void;
closeDrawer: (animated?: boolean) => void;
page: () => number;
page: () => FluidTabPage;
setScrollEnabled: () => true;
isDrawerOpen: () => boolean;
node: RefObject<Animated.View>;
@@ -164,19 +166,18 @@ export const FluidPanels = forwardRef<TabsRef, TabProps>(function FluidTabs(
useImperativeHandle(
ref,
(): TabsRef => ({
goToPage: (page: number, animated = true) => {
goToPage: (page: FluidTabPage, animated = true) => {
if (deviceMode === "tablet") {
translateX.value = animated ? withTiming(0) : 0;
return;
}
page = page + 1;
if (page === 1) {
if (page === "home") {
onDrawerStateChange(false);
translateX.value = !animated
? homePosition
: withTiming(homePosition);
currentTab.value = 1;
} else if (page === 2) {
} else if (page === "editor") {
onDrawerStateChange(false);
translateX.value = !animated
? editorPosition
@@ -242,7 +243,7 @@ export const FluidPanels = forwardRef<TabsRef, TabProps>(function FluidTabs(
onDrawerStateChange(false);
isDrawerOpen.value = false;
},
page: () => currentTab.value,
page: () => (currentTab.value === 1 ? "home" : "editor"),
setScrollEnabled: () => true,
node: node
}),

View File

@@ -66,7 +66,7 @@ export const openNote = async (
item: note
});
if (!DDS.isTab) {
fluidTabsRef.current?.goToPage(1);
fluidTabsRef.current?.goToPage("editor");
}
}
};

View File

@@ -143,7 +143,7 @@ export const Properties = ({ close = () => {}, item, buttons = [] }) => {
newTab: true
});
if (!DDS.isTab) {
fluidTabsRef.current?.goToPage(1);
fluidTabsRef.current?.goToPage("editor");
}
}}
/>

View File

@@ -423,7 +423,7 @@ export const ReferencesList = ({ item, close }: ReferencesListProps) => {
item: note,
blockId: blockId
});
fluidTabsRef.current?.goToPage(1);
fluidTabsRef.current?.goToPage("editor");
close?.();
}}
reference={item as Note}

View File

@@ -167,7 +167,7 @@ const onAppOpenedFromURL = async (event: { url: string }) => {
clearAppState();
editorState().movedAway = false;
eSendEvent(eOnLoadNote, { newNote: true });
fluidTabsRef.current?.goToPage(1, false);
fluidTabsRef.current?.goToPage("editor", false);
return;
} else if (url.startsWith("https://notesnook.com/open_note")) {
const id = new URL(url).searchParams.get("id");
@@ -177,7 +177,7 @@ const onAppOpenedFromURL = async (event: { url: string }) => {
eSendEvent(eOnLoadNote, {
item: note
});
fluidTabsRef.current?.goToPage(1, false);
fluidTabsRef.current?.goToPage("editor", false);
}
}
} else if (url.startsWith("https://notesnook.com/open_reminder")) {

View File

@@ -104,7 +104,7 @@ export const FluidPanelsView = React.memo(
onShortcutPressed: async (item) => {
if (!item && getAppState()) {
editorState().movedAway = false;
fluidTabsRef.current?.goToPage(1, false);
fluidTabsRef.current?.goToPage("editor", false);
return;
}
if (item?.type === "notesnook.action.newnote") {
@@ -113,13 +113,13 @@ export const FluidPanelsView = React.memo(
setTimeout(() => {
eSendEvent(eOnLoadNote, { newNote: true });
editorState().movedAway = false;
fluidTabsRef.current?.goToPage(1, false);
fluidTabsRef.current?.goToPage("editor", false);
}, 3000);
return;
}
eSendEvent(eOnLoadNote, { newNote: true });
editorState().movedAway = false;
fluidTabsRef.current?.goToPage(1, false);
fluidTabsRef.current?.goToPage("editor", false);
}
}
});

View File

@@ -259,7 +259,7 @@ export const useEditorEvents = (
if (deviceMode === "mobile") {
editorState().movedAway = true;
fluidTabsRef.current?.goToPage(0);
fluidTabsRef.current?.goToPage("home");
}
setTimeout(() => {
@@ -269,7 +269,7 @@ export const useEditorEvents = (
}, [editor, deviceMode, fullscreen]);
const onHardwareBackPress = useCallback(() => {
if (fluidTabsRef.current?.page() === 2) {
if (fluidTabsRef.current?.page() === "editor") {
onBackPress();
return true;
}

View File

@@ -995,14 +995,14 @@ export const useEditor = (
if (!appState) return;
state.current.isRestoringState = true;
state.current.currentlyEditing = true;
if (fluidTabsRef.current?.page() === 2) {
if (fluidTabsRef.current?.page() === "editor") {
state.current.movedAway = false;
}
if (!state.current.editorStateRestored) {
state.current.isRestoringState = true;
if (!DDS.isTab) {
fluidTabsRef.current?.goToPage(1, false);
fluidTabsRef.current?.goToPage("editor", false);
}
}
@@ -1081,12 +1081,12 @@ export const useEditor = (
item: note
});
}
fluidTabsRef.current?.goToPage(1);
fluidTabsRef.current?.goToPage("editor");
} else {
noteId = useTabStore.getState().getCurrentNoteId() || null;
if (!noteId) {
loadNote({ newNote: true });
if (fluidTabsRef.current?.page() === 1) {
if (fluidTabsRef.current?.page() === "editor") {
state.current.currentlyEditing = false;
}
} else {

View File

@@ -58,7 +58,7 @@ export function openEditor() {
eSendEvent(eOnLoadNote, { newNote: true });
editorState().currentlyEditing = true;
editorState().movedAway = false;
fluidTabsRef.current?.goToPage(1);
fluidTabsRef.current?.goToPage("editor");
} else {
eSendEvent(eOnLoadNote, { newNote: true });
}

View File

@@ -59,7 +59,7 @@ export const IntentService = {
eSendEvent(eOnLoadNote, {
item: note
});
fluidTabsRef.current?.goToPage(1, false);
fluidTabsRef.current?.goToPage("editor", false);
}
} else if (intent["com.streetwriters.notesnook.OpenReminderId"]) {
const reminder = await db.reminders.reminder(

View File

@@ -440,7 +440,7 @@ async function loadNote(id: string, jump: boolean) {
const note = await db.notes.note(id);
if (!note) return;
if (!DDS.isTab && jump) {
fluidTabsRef.current?.goToPage(1);
fluidTabsRef.current?.goToPage("editor");
}
NotesnookModule.setAppState(
JSON.stringify({