diff --git a/apps/mobile/app/components/properties/index.js b/apps/mobile/app/components/properties/index.js index dfee02e02..1ce7acad1 100644 --- a/apps/mobile/app/components/properties/index.js +++ b/apps/mobile/app/components/properties/index.js @@ -123,7 +123,7 @@ export const Properties = ({ close = () => {}, item, buttons = [] }) => { paddingHorizontal: 12 }} > - {item.notebooks ? : null} + state.colors); const notebooks = useNotebookStore((state) => state.notebooks); function getNotebooks(item) { - if (!item.notebooks || item.notebooks.length < 1) return []; let filteredNotebooks = []; + const relations = db.relations.to(note, "notebook"); + filteredNotebooks.push( + ...relations.map((notebook) => ({ + ...notebook, + topics: [] + })) + ); + if (!item.notebooks || item.notebooks.length < 1) return filteredNotebooks; + for (let notebookReference of item.notebooks) { let notebook = { ...(notebooks.find((item) => item.id === notebookReference.id) || {}) @@ -45,7 +53,14 @@ export default function Notebooks({ note, close, full }) { notebook.topics = notebook.topics.filter((topic) => { return notebookReference.topics.findIndex((t) => t === topic.id) > -1; }); - filteredNotebooks.push(notebook); + const index = filteredNotebooks.findIndex( + (item) => item.id === notebook.id + ); + if (index > -1) { + filteredNotebooks[index].topics = notebook.topics; + } else { + filteredNotebooks.push(notebook); + } } } return filteredNotebooks; @@ -63,7 +78,6 @@ export default function Notebooks({ note, close, full }) { if (!item) return; TopicNotes.navigate(item, true); }; - const renderItem = (item) => ( ); - return !note.notebooks || note.notebooks.length === 0 ? null : ( + return noteNotebooks.length === 0 ? null : ( { }); return; } - if (version && version === getVersion()) return false; + if (!version || version === getVersion()) { + SettingsService.set({ + version: getVersion() + }); + return false; + } + SettingsService.set({ version: getVersion() }); diff --git a/apps/mobile/app/components/sheets/topic-sheet/index.tsx b/apps/mobile/app/components/sheets/topic-sheet/index.tsx index 2e70395a1..12707f6ab 100644 --- a/apps/mobile/app/components/sheets/topic-sheet/index.tsx +++ b/apps/mobile/app/components/sheets/topic-sheet/index.tsx @@ -53,6 +53,9 @@ import { getTotalNotes, history } from "../../../utils"; import { Properties } from "../../properties"; import { deleteItems } from "../../../utils/functions"; import { presentDialog } from "../../dialog/functions"; +import Config from "react-native-config"; +import { notesnook } from "../../../../e2e/test.ids"; + export const TopicsSheet = () => { const currentScreen = useNavigationStore((state) => state.currentScreen); const canShow = @@ -179,7 +182,7 @@ export const TopicsSheet = () => { backgroundColor: colors.nav }} keyboardHandlerEnabled={false} - snapPoints={[15, 60, 100]} + snapPoints={Config.isTesting === "true" ? [60, 100] : [15, 60, 100]} initialSnapIndex={0} backgroundInteractionEnabled onChange={(position, height) => { @@ -212,6 +215,7 @@ export const TopicsSheet = () => { }} > { width: 40, height: 40 }} + testID={notesnook.ids.notebook.menu} onPress={() => { Properties.present(item); }} diff --git a/apps/mobile/app/package.json b/apps/mobile/app/package.json index 98ff67140..3be77b97d 100644 --- a/apps/mobile/app/package.json +++ b/apps/mobile/app/package.json @@ -15,7 +15,7 @@ "html-to-text": "8.1.0", "phone": "^3.1.14", "qclone": "^1.2.0", - "react-native-actions-sheet": "^0.9.0-alpha.8", + "react-native-actions-sheet": "^0.9.0-alpha.9", "react-native-check-version": "https://github.com/flexible-agency/react-native-check-version", "react-native-drax": "^0.10.2", "react-native-image-zoom-viewer": "^3.0.1", diff --git a/apps/mobile/e2e/tests/notebook.e2e.js b/apps/mobile/e2e/tests/notebook.e2e.js index c140529ec..89b07d073 100644 --- a/apps/mobile/e2e/tests/notebook.e2e.js +++ b/apps/mobile/e2e/tests/notebook.e2e.js @@ -29,7 +29,8 @@ import { navigate, elementByText, sleep, - notVisibleByText + notVisibleByText, + visibleById } from "./utils"; async function createNotebook( @@ -128,11 +129,11 @@ describe("NOTEBOOKS", () => { await device.pressBack(); await sleep(500); await tapByText("Notebook 1"); - await tapById(notesnook.buttons.add); + await tapById("add-topic-button"); await elementById("input-title").typeText("Topic"); await tapByText("Add"); await sleep(500); - await visibleByText("Topic"); + await visibleById("topic-sheet-item-0"); }); it("Edit topic", async () => { @@ -145,12 +146,11 @@ describe("NOTEBOOKS", () => { await sleep(500); await tapByText("Notebook 1"); await sleep(300); - await visibleByText("Topic"); + await visibleById("topic-sheet-item-0"); await tapById(notesnook.ids.notebook.menu); await tapByText("Edit topic"); await elementById("input-title").typeText(" (edited)"); await tapByText("Save"); - await visibleByText("Topic (edited)"); }); it("Add new note to topic", async () => { @@ -175,12 +175,11 @@ describe("NOTEBOOKS", () => { await tapByText("Topic"); let note = await createNote(); await elementByText(note.body).longPress(); - await tapByText("Select"); await tapById("select-minus"); await notVisibleById(note.title); }); - it.only("Add/Remove note to notebook from home", async () => { + it("Add/Remove note to notebook from home", async () => { await prepare(); await navigate("Notebooks"); await sleep(500); @@ -192,31 +191,31 @@ describe("NOTEBOOKS", () => { await createNote(); console.log("ADD TO A SINGLE TOPIC"); await tapById(notesnook.listitem.menu); - await tapById("icon-Add to notebook"); + await tapById("icon-notebooks"); await sleep(500); await tapByText("Notebook 1"); await tapByText("Topic"); await tapByText("Save"); await sleep(300); - await visibleByText("Notebook 1 › Topic"); + await visibleByText("Topic"); console.log("MOVE FROM ONE TOPIC TO ANOTHER"); await tapById(notesnook.listitem.menu); - await tapById("icon-Add to notebook"); + await tapById("icon-notebooks"); await tapByText("Notebook 1"); await tapByText("Topic 2"); await tapByText("Save"); - await visibleByText("Notebook 1 › Topic 2"); + await visibleByText("Topic 2"); console.log("REMOVE FROM TOPIC"); await tapById(notesnook.listitem.menu); - await tapById("icon-Add to notebook"); + await tapById("icon-notebooks"); await tapByText("Notebook 1"); await tapByText("Topic 2"); await tapByText("Save"); await sleep(300); - await notVisibleByText("Notebook 1 › Topic 2"); + await notVisibleByText("Topic 2"); console.log("MOVE TO MULTIPLE TOPICS"); await tapById(notesnook.listitem.menu); - await tapById("icon-Add to notebook"); + await tapById("icon-notebooks"); await tapByText("Notebook 1"); await elementByText("Topic").longPress(); await visibleByText("Reset selection"); diff --git a/apps/mobile/package.json b/apps/mobile/package.json index 1469f38bd..2dbaa6e60 100644 --- a/apps/mobile/package.json +++ b/apps/mobile/package.json @@ -15,7 +15,7 @@ "repack": "cd native && react-native webpack-start", "install-pods": "cd native/ios && pod install", "build-ios": "cd native && detox build -c ios.sim.release", - "build-android": "cd native && detox build -c android.emu.release", + "build-android": " cd native && detox build -c android.emu.release", "e2e-android": "cd native && detox test --configuration android.emu.release --detectOpenHandles", "e2e-ios": "cd native && detox test -c ios.sim.release --detectOpenHandles", "bump": "cd native && npx react-native bump-version --skip-semver-for android", @@ -36,4 +36,4 @@ "react-native-fingerprint-scanner": "https://github.com/ammarahm-ed/react-native-fingerprint-scanner.git", "react-native-iap": "7.5.6" } -} \ No newline at end of file +}