diff --git a/src-tauri/migrations/20230420040005_insert_last_login_to_settings.sql b/src-tauri/migrations/20230420040005_insert_last_login_to_settings.sql
new file mode 100644
index 00000000..7a8125d8
--- /dev/null
+++ b/src-tauri/migrations/20230420040005_insert_last_login_to_settings.sql
@@ -0,0 +1,5 @@
+-- Add migration script here
+INSERT INTO
+ settings (key, value)
+VALUES
+ ("last_login", "0");
diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs
index 54cd3367..eac65c05 100644
--- a/src-tauri/src/main.rs
+++ b/src-tauri/src/main.rs
@@ -63,6 +63,12 @@ fn main() {
sql: include_str!("../migrations/20230418080146_create_chats.sql"),
kind: MigrationKind::Up,
},
+ Migration {
+ version: 20230420040005,
+ description: "insert last login to settings",
+ sql: include_str!("../migrations/20230420040005_insert_last_login_to_settings.sql"),
+ kind: MigrationKind::Up,
+ },
],
)
.build(),
diff --git a/src/app/page.tsx b/src/app/page.tsx
index 7e645ee0..f5410845 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -10,21 +10,21 @@ import {
createChat,
createNote,
getActiveAccount,
+ getLastLogin,
getPlebs,
+ updateLastLogin,
} from '@utils/storage';
import { getParentID } from '@utils/transform';
import LumeSymbol from '@assets/icons/Lume';
-import useLocalStorage, { writeStorage } from '@rehooks/local-storage';
+import { writeStorage } from '@rehooks/local-storage';
import { useRouter } from 'next/navigation';
import { useCallback, useContext, useEffect, useRef } from 'react';
export default function Page() {
const router = useRouter();
-
const [pool, relays]: any = useContext(RelayContext);
- const [lastLogin] = useLocalStorage('lastLogin', new Date());
const now = useRef(new Date());
const timeout = useRef(null);
@@ -32,6 +32,7 @@ export default function Page() {
const fetchData = useCallback(
async (account: { id: number; pubkey: string; chats: string[] }, tags: any) => {
+ const lastLogin = await getLastLogin();
const notes = await countTotalNotes();
const channels = await countTotalChannels();
const chats = account.chats?.length || 0;
@@ -44,7 +45,11 @@ export default function Page() {
if (notes.total === 0) {
since = dateToUnix(hoursAgo(24, now.current));
} else {
- since = dateToUnix(new Date(lastLogin));
+ if (parseInt(lastLogin) > 0) {
+ since = parseInt(lastLogin);
+ } else {
+ since = dateToUnix(hoursAgo(24, now.current));
+ }
}
query.push({
kinds: [1, 6],
@@ -119,7 +124,8 @@ export default function Page() {
},
undefined,
() => {
- timeout.current = setTimeout(() => router.replace('/nostr/newsfeed/following'), 5000);
+ updateLastLogin(dateToUnix(now.current));
+ //timeout.current = setTimeout(() => router.replace('/nostr/newsfeed/following'), 5000);
},
{
unsubscribeOnEose: true,
@@ -127,7 +133,7 @@ export default function Page() {
}
);
},
- [router, pool, relays, lastLogin]
+ [router, pool, relays]
);
useEffect(() => {
diff --git a/src/components/eventCollector.tsx b/src/components/eventCollector.tsx
index d8131c50..4ace023c 100644
--- a/src/components/eventCollector.tsx
+++ b/src/components/eventCollector.tsx
@@ -9,9 +9,7 @@ import { dateToUnix } from '@utils/getDate';
import { createChannel, createChat, createNote, updateAccount } from '@utils/storage';
import { getParentID, nip02ToArray } from '@utils/transform';
-import useLocalStorage, { writeStorage } from '@rehooks/local-storage';
-import { window } from '@tauri-apps/api';
-import { TauriEvent } from '@tauri-apps/api/event';
+import useLocalStorage from '@rehooks/local-storage';
import { useSetAtom } from 'jotai';
import { useCallback, useContext, useEffect, useRef } from 'react';
@@ -23,10 +21,9 @@ export default function EventCollector() {
const follows = JSON.parse(activeAccount.follows);
const now = useRef(new Date());
- const unsubscribe = useRef(null);
const subscribe = useCallback(async () => {
- unsubscribe.current = pool.subscribe(
+ pool.subscribe(
[
{
kinds: [1, 6],
@@ -106,27 +103,9 @@ export default function EventCollector() {
);
}, [activeAccount.follows, activeAccount.pubkey, activeAccount.id, pool, relays, setHasNewerNote]);
- const listenWindowClose = useCallback(async () => {
- window.getCurrent().listen(TauriEvent.WINDOW_CLOSE_REQUESTED, () => {
- writeStorage('lastLogin', now.current);
- window.getCurrent().close();
- });
- }, []);
-
useEffect(() => {
subscribe();
- listenWindowClose();
+ }, [setHasNewerNote, subscribe]);
- return () => {
- if (unsubscribe.current) {
- unsubscribe.current();
- }
- };
- }, [setHasNewerNote, subscribe, listenWindowClose]);
-
- return (
- <>
-
- >
- );
+ return ;
}
diff --git a/src/utils/storage.tsx b/src/utils/storage.tsx
index c7562c59..8cf6a05f 100644
--- a/src/utils/storage.tsx
+++ b/src/utils/storage.tsx
@@ -144,3 +144,16 @@ export async function createChat(account_id: number, pubkey: string, created_at:
created_at,
]);
}
+
+// get last login
+export async function getLastLogin() {
+ const db = await connect();
+ const result = await db.select(`SELECT value FROM settings WHERE key = "last_login";`);
+ return result[0]?.value;
+}
+
+// update last login
+export async function updateLastLogin(value: number) {
+ const db = await connect();
+ return await db.execute(`UPDATE settings SET value = ${value} WHERE key = "last_login";`);
+}