+2
-1
src/background/index.ts
+2
-1
src/background/index.ts
···
5
5
// ignore errors; receiving end won't exist if it's the newtab page
6
6
try {
7
7
chrome.tabs.sendMessage(tabId, { type: MessageRequest.PING });
8
-
} catch (err) {}
8
+
} catch (err) { }
9
9
}
10
10
11
11
// this is meant to be called async
···
263
263
sendResponse(err);
264
264
});
265
265
break;
266
+
266
267
default:
267
268
}
268
269
+21
-10
src/lib/Rabbithole.svelte
+21
-10
src/lib/Rabbithole.svelte
···
7
7
getOrderedProjects,
8
8
NotificationDuration,
9
9
} from "../utils";
10
-
import {
11
-
SvelteUIProvider,
12
-
AppShell,
13
-
Navbar,
14
-
} from "@svelteuidev/core";
10
+
import { SvelteUIProvider, AppShell, Navbar } from "@svelteuidev/core";
11
+
15
12
let activeProject = {};
16
13
let websites = [];
17
14
let projects = [];
18
15
let isDark = false;
19
16
let opened = true;
20
17
let syncSuccess = false;
21
-
let syncFail = false;
18
+
let settings = {
19
+
show: false,
20
+
alignment: "right",
21
+
darkMode: false,
22
+
};
22
23
23
24
onMount(async () => {
25
+
settings = await chrome.runtime.sendMessage({
26
+
type: MessageRequest.GET_SETTINGS,
27
+
});
28
+
isDark = settings.darkMode;
29
+
document.body.classList.toggle("dark-mode", isDark);
24
30
projects = await getOrderedProjects();
25
31
activeProject = await chrome.runtime.sendMessage({
26
32
type: MessageRequest.GET_ACTIVE_PROJECT,
···
109
115
});
110
116
websites = possiblyDuplicatedWebsites.filter(
111
117
(value, index, self) =>
112
-
index === self.findIndex((t) => t.url === value.url),
118
+
index === self.findIndex((t) => t.url === value.url)
113
119
);
114
120
}
115
121
···
127
133
link.click();
128
134
}
129
135
130
-
function toggleTheme() {
136
+
async function toggleTheme() {
131
137
isDark = !isDark;
132
138
document.body.classList.toggle("dark-mode", isDark);
139
+
settings.darkMode = isDark;
140
+
chrome.runtime.sendMessage({
141
+
type: MessageRequest.UPDATE_SETTINGS,
142
+
settings,
143
+
});
133
144
}
134
145
135
146
function handleToggleSidebar() {
···
164
175
on:projectSync={saveWindowToActiveProject}
165
176
on:exportRabbitholes={exportRabbitholes}
166
177
on:toggleSidebar={handleToggleSidebar}
167
-
/>
168
-
</Navbar>
178
+
/>
179
+
</Navbar>
169
180
{:else}
170
181
<div class="hamburger-only">
171
182
<Sidebar
+10
-9
src/lib/Sidebar.svelte
+10
-9
src/lib/Sidebar.svelte
···
1
1
<script>
2
2
import { createEventDispatcher } from "svelte";
3
-
import {
4
-
Button,
5
-
Group,
6
-
Text,
7
-
TextInput,
8
-
Tooltip,
9
-
} from "@svelteuidev/core";
3
+
import { Button, Group, Text, TextInput, Tooltip } from "@svelteuidev/core";
10
4
import SettingsButtons from "src/lib/SettingsButtons.svelte";
11
5
import UpdatingComponent from "src/lib/UpdatingComponent.svelte";
12
6
import { NotificationDuration } from "../utils";
···
114
108
<Text weight="bold" size="lg" override={textStyleOverride}
115
109
>Change Project</Text
116
110
>
117
-
<ProjectSelector id="project-selector" {projects} {handleProjectChange} />
111
+
<ProjectSelector
112
+
id="project-selector"
113
+
{projects}
114
+
{handleProjectChange}
115
+
/>
118
116
<Tooltip
119
117
{isHoveringOverSync}
120
118
label="Save all tabs in window to current project"
···
156
154
<Text weight="bold" size="lg" override={textStyleOverride}
157
155
>Create Project</Text
158
156
>
159
-
<UpdatingComponent fail={createProjectFail} failMsg={createProjectFailMsg}>
157
+
<UpdatingComponent
158
+
fail={createProjectFail}
159
+
failMsg={createProjectFailMsg}
160
+
>
160
161
<TextInput
161
162
placeholder="My new rabbithole"
162
163
bind:value={newRabbitholeName}
+3
-2
src/storage/db.ts
+3
-2
src/storage/db.ts
···
5
5
export interface Settings {
6
6
alignment: string;
7
7
show: boolean;
8
+
darkMode: boolean;
8
9
}
9
10
10
11
export interface Website {
···
91
92
});
92
93
objectStore.createIndex("name", "name", { unique: false });
93
94
objectStore.createIndex("url", "url", { unique: true });
94
-
objectStore.transaction.oncomplete = () => {};
95
+
objectStore.transaction.oncomplete = () => { };
95
96
}
96
97
if (event.oldVersion < 2) {
97
98
db.createObjectStore("user", { keyPath: "id" });
···
372
373
.put(user);
373
374
374
375
request.onsuccess = (event) => {
375
-
console.log(`update settings success: ${event.target}`);
376
+
console.log(`update settings success: ${JSON.stringify(event.target)}`);
376
377
resolve(settings);
377
378
};
378
379