Skip to content

Commit

Permalink
refactor: rename functions and add types
Browse files Browse the repository at this point in the history
  • Loading branch information
polyrainbow committed Jun 14, 2024
1 parent f8324ab commit d831720
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 35 deletions.
4 changes: 2 additions & 2 deletions src/components/NoteAccessProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
import BusyView from "./BusyView";
import { useState } from "react";
import {
initializeNotesProviderWithExistingFolderHandle,
initializeNotesProviderWithFolderHandleFromStorage,
isInitialized,
} from "../lib/LocalDataStorage";
import { useNavigate } from "react-router-dom";
Expand All @@ -22,7 +22,7 @@ const NoteAccessProvider = ({

useRunOnce(() => {
if (!isInitialized()) {
initializeNotesProviderWithExistingFolderHandle()
initializeNotesProviderWithFolderHandleFromStorage()
.then(() => {
setIsReady(true);
})
Expand Down
4 changes: 2 additions & 2 deletions src/components/ScriptView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import HeaderContainerLeftRight from "./HeaderContainerLeftRight";
import BusyIndicator from "./BusyIndicator";
import noteWorkerUrl from "../lib/note-worker/index.js?worker&url";
import {
getFolderHandle,
getActiveFolderHandle,
invalidateNotesProvider,
} from "../lib/LocalDataStorage";
import useRunOnce from "../hooks/useRunOnce";
Expand Down Expand Up @@ -68,7 +68,7 @@ const ScriptView = () => {
const notesWorker = new Worker(noteWorkerUrl, { type: "module" });
notesWorker.postMessage({
action: "initialize",
folderHandle: getFolderHandle(),
folderHandle: getActiveFolderHandle(),
});
notesWorker.onmessage = (e) => {
if (e.data.type === "EVALUATION_COMPLETED") {
Expand Down
2 changes: 1 addition & 1 deletion src/components/SearchPresets.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ const SearchPresets = ({
const [currentQueryLabel, setCurrentQueryLabel] = useState<string>("");

useEffect(() => {
IDB.get("SEARCH_PRESETS")
IDB.get<SearchPreset[]>("SEARCH_PRESETS")
.then((searchPresets) => {
setSearchPresets(searchPresets || DEFAULT_SEARCH_PRESETS);
})
Expand Down
8 changes: 4 additions & 4 deletions src/components/StartViewLocal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import { PathTemplate } from "../types/PathTemplate";
import { l } from "../lib/intl";
import { getAppPath } from "../lib/utils";
import {
getFolderHandleName,
getExistingFolderHandleName,
initializeNotesProvider,
initializeNotesProviderWithExistingFolderHandle,
initializeNotesProviderWithFolderHandleFromStorage,
} from "../lib/LocalDataStorage";
import { LOCAL_GRAPH_ID } from "../config";

Expand All @@ -25,7 +25,7 @@ const StartViewLocal = () => {
useEffect(() => {
const retrieveLocalDatabaseFolderHandle = async () => {
const folderHandleName
= await getFolderHandleName();
= await getExistingFolderHandleName();
setLocalDatabaseFolderHandleName(folderHandleName);
};

Expand Down Expand Up @@ -60,7 +60,7 @@ const StartViewLocal = () => {
className="default-button default-action"
onClick={async () => {
try {
await initializeNotesProviderWithExistingFolderHandle();
await initializeNotesProviderWithFolderHandleFromStorage();
const urlSearchParams
= new URLSearchParams(window.location.search);
if (urlSearchParams.has("redirect")) {
Expand Down
65 changes: 39 additions & 26 deletions src/lib/LocalDataStorage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,32 +44,52 @@ let folderHandle: FileSystemDirectoryHandle | null = null;
let notesProvider: NotesProvider | null = null;


export const getFolderHandleName = async (): Promise<string | null> => {
export const getExistingFolderHandleName = async (): Promise<string | null> => {
if (folderHandle) {
return folderHandle.name;
}

const newFolderHandle = await IDB.get(FOLDER_HANDLE_STORAGE_KEY);
if (!newFolderHandle) {
return null;
const folderHandleFromStorage = await IDB.get<FileSystemDirectoryHandle>(
FOLDER_HANDLE_STORAGE_KEY,
);
if (folderHandleFromStorage) {
return folderHandleFromStorage.name;
}

folderHandle = newFolderHandle as FileSystemDirectoryHandle;
return folderHandle.name;
return null;
};


export const getFolderHandle = (): FileSystemDirectoryHandle | null => {
export const getActiveFolderHandle = (): FileSystemDirectoryHandle | null => {
return folderHandle;
};

export const getSavedFolderHandle = async (
export const getFolderHandleFromStorage = async (
): Promise<FileSystemDirectoryHandle> => {
const folderHandle = await IDB.get(FOLDER_HANDLE_STORAGE_KEY);
const folderHandle = await IDB.get<FileSystemDirectoryHandle>(
FOLDER_HANDLE_STORAGE_KEY,
);
if (!folderHandle) {
throw new Error("No folder handle saved");
throw new Error("No folder handle in storage");
}
return folderHandle as FileSystemDirectoryHandle;
return folderHandle;
};


const createMockNotesProvider = async (
createDummyNotes: boolean,
): Promise<NotesProvider> => {
const memoryStorageProvider = new MockStorageProvider();
if (createDummyNotes) {
for (let i = 1; i <= 1000; i++) {
await memoryStorageProvider.writeObject(
"note-" + i + ".subtext",
"Test note " + i,
);
}
}
notesProvider = new NotesProvider(memoryStorageProvider);
return notesProvider;
};


Expand All @@ -78,17 +98,7 @@ export const initializeNotesProvider = async (
createDummyNotes?: boolean,
): Promise<NotesProvider> => {
if (!newFolderHandle) {
const memoryStorageProvider = new MockStorageProvider();
if (createDummyNotes) {
for (let i = 1; i <= 1000; i++) {
await memoryStorageProvider.writeObject(
"note-" + i + ".subtext",
"Test note " + i,
);
}
}
notesProvider = new NotesProvider(memoryStorageProvider);
return notesProvider;
return createMockNotesProvider(createDummyNotes ?? false);
}

await verifyPermission(newFolderHandle, true);
Expand All @@ -110,16 +120,18 @@ export const initializeNotesProvider = async (
};


export const initializeNotesProviderWithExistingFolderHandle = async (
export const initializeNotesProviderWithFolderHandleFromStorage = async (
): Promise<NotesProvider> => {
const folderHandle = await getSavedFolderHandle();
return initializeNotesProvider(folderHandle);
const folderHandleFromStorage = await getFolderHandleFromStorage();
return initializeNotesProvider(folderHandleFromStorage);
};


export const isInitialized = (): boolean => {
return notesProvider instanceof NotesProvider;
};


export const getNotesProvider = (): NotesProvider | null => {
return notesProvider;
};
Expand All @@ -134,7 +146,7 @@ export const invalidateNotesProvider = async (): Promise<NotesProvider> => {
};


export const getUrlForSlug = async (slug: Slug) => {
export const getUrlForSlug = async (slug: Slug): Promise<string> => {
if (!notesProvider) {
throw new Error("Notes provider not initialized");
}
Expand All @@ -152,6 +164,7 @@ export const getUrlForSlug = async (slug: Slug) => {
return url;
};


export const saveFile = async (slug: Slug) => {
if (!notesProvider) {
throw new Error("Notes provider not initialized");
Expand Down

0 comments on commit d831720

Please sign in to comment.