mirror of
https://github.com/streetwriters/notesnook.git
synced 2026-09-01 19:49:54 +02:00
mobile: refactor goToPage
This commit is contained in:
committed by
Abdullah Atta
parent
2df852f1b8
commit
dd80594594
@@ -553,7 +553,7 @@ export class VaultDialog extends Component {
|
||||
item: note
|
||||
});
|
||||
if (!DDS.isTab) {
|
||||
fluidTabsRef.current?.goToPage(1);
|
||||
fluidTabsRef.current?.goToPage("editor");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}),
|
||||
|
||||
@@ -66,7 +66,7 @@ export const openNote = async (
|
||||
item: note
|
||||
});
|
||||
if (!DDS.isTab) {
|
||||
fluidTabsRef.current?.goToPage(1);
|
||||
fluidTabsRef.current?.goToPage("editor");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -143,7 +143,7 @@ export const Properties = ({ close = () => {}, item, buttons = [] }) => {
|
||||
newTab: true
|
||||
});
|
||||
if (!DDS.isTab) {
|
||||
fluidTabsRef.current?.goToPage(1);
|
||||
fluidTabsRef.current?.goToPage("editor");
|
||||
}
|
||||
}}
|
||||
/>
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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")) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 });
|
||||
}
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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({
|
||||
|
||||
Reference in New Issue
Block a user