mirror of
https://github.com/luminous-devs/lume.git
synced 2024-09-19 19:46:34 +00:00
add kind 30023 to initial data
This commit is contained in:
parent
f46f4530a6
commit
730f3be016
@ -4,6 +4,7 @@ import { READONLY_RELAYS } from '@lume/stores/constants';
|
|||||||
import { dateToUnix, hoursAgo } from '@lume/utils/getDate';
|
import { dateToUnix, hoursAgo } from '@lume/utils/getDate';
|
||||||
import {
|
import {
|
||||||
addToBlacklist,
|
addToBlacklist,
|
||||||
|
countTotalLongNotes,
|
||||||
countTotalNotes,
|
countTotalNotes,
|
||||||
createChat,
|
createChat,
|
||||||
createNote,
|
createNote,
|
||||||
@ -28,19 +29,31 @@ export function Page() {
|
|||||||
const account = await getActiveAccount();
|
const account = await getActiveAccount();
|
||||||
const lastLogin = await getLastLogin();
|
const lastLogin = await getLastLogin();
|
||||||
const notes = await countTotalNotes();
|
const notes = await countTotalNotes();
|
||||||
|
const longNotes = await countTotalLongNotes();
|
||||||
|
|
||||||
const follows = nip02ToArray(JSON.parse(account.follows));
|
const follows = nip02ToArray(JSON.parse(account.follows));
|
||||||
const query = [];
|
const query = [];
|
||||||
|
|
||||||
let since: number;
|
let sinceNotes: number;
|
||||||
|
let sinceLongNotes: number;
|
||||||
|
|
||||||
if (notes === 0) {
|
if (notes === 0) {
|
||||||
since = dateToUnix(hoursAgo(24, now.current));
|
sinceNotes = dateToUnix(hoursAgo(48, now.current));
|
||||||
} else {
|
} else {
|
||||||
if (parseInt(lastLogin) > 0) {
|
if (parseInt(lastLogin) > 0) {
|
||||||
since = parseInt(lastLogin);
|
sinceNotes = parseInt(lastLogin);
|
||||||
} else {
|
} else {
|
||||||
since = dateToUnix(hoursAgo(24, now.current));
|
sinceNotes = dateToUnix(hoursAgo(48, now.current));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (longNotes === 0) {
|
||||||
|
sinceLongNotes = 0;
|
||||||
|
} else {
|
||||||
|
if (parseInt(lastLogin) > 0) {
|
||||||
|
sinceLongNotes = parseInt(lastLogin);
|
||||||
|
} else {
|
||||||
|
sinceLongNotes = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,7 +61,7 @@ export function Page() {
|
|||||||
query.push({
|
query.push({
|
||||||
kinds: [1, 6],
|
kinds: [1, 6],
|
||||||
authors: follows,
|
authors: follows,
|
||||||
since: since,
|
since: sinceNotes,
|
||||||
until: dateToUnix(now.current),
|
until: dateToUnix(now.current),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -68,6 +81,13 @@ export function Page() {
|
|||||||
until: dateToUnix(now.current),
|
until: dateToUnix(now.current),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// kind 30023 (long post) query
|
||||||
|
query.push({
|
||||||
|
kinds: [30023],
|
||||||
|
since: sinceLongNotes,
|
||||||
|
until: dateToUnix(now.current),
|
||||||
|
});
|
||||||
|
|
||||||
// subscribe relays
|
// subscribe relays
|
||||||
unsubscribe = pool.subscribe(
|
unsubscribe = pool.subscribe(
|
||||||
query,
|
query,
|
||||||
@ -113,11 +133,27 @@ export function Page() {
|
|||||||
if (event.tags[0][0] === 'e') {
|
if (event.tags[0][0] === 'e') {
|
||||||
addToBlacklist(account.id, event.tags[0][1], 43, 1);
|
addToBlacklist(account.id, event.tags[0][1], 43, 1);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
// mute user (channel only)
|
// mute user (channel only)
|
||||||
case 44:
|
case 44:
|
||||||
if (event.tags[0][0] === 'p') {
|
if (event.tags[0][0] === 'p') {
|
||||||
addToBlacklist(account.id, event.tags[0][1], 44, 1);
|
addToBlacklist(account.id, event.tags[0][1], 44, 1);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
// long post
|
||||||
|
case 30023:
|
||||||
|
// insert event to local database
|
||||||
|
createNote(
|
||||||
|
event.id,
|
||||||
|
account.id,
|
||||||
|
event.pubkey,
|
||||||
|
event.kind,
|
||||||
|
event.tags,
|
||||||
|
event.content,
|
||||||
|
event.created_at,
|
||||||
|
''
|
||||||
|
);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import { shortenKey } from '@lume/utils/shortenKey';
|
|||||||
|
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import relativeTime from 'dayjs/plugin/relativeTime';
|
import relativeTime from 'dayjs/plugin/relativeTime';
|
||||||
|
import Skeleton from 'react-loading-skeleton';
|
||||||
|
|
||||||
dayjs.extend(relativeTime);
|
dayjs.extend(relativeTime);
|
||||||
|
|
||||||
@ -24,7 +25,7 @@ export const NoteDefaultUser = ({ pubkey, time }: { pubkey: string; time: number
|
|||||||
<div className="flex flex-col gap-1">
|
<div className="flex flex-col gap-1">
|
||||||
<div className="flex items-baseline gap-2">
|
<div className="flex items-baseline gap-2">
|
||||||
<h5 className="text-sm font-semibold leading-none group-hover:underline">
|
<h5 className="text-sm font-semibold leading-none group-hover:underline">
|
||||||
{user?.display_name || shortenKey(pubkey)}
|
{user?.display_name || user?.name || <Skeleton />}
|
||||||
</h5>
|
</h5>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-baseline gap-1.5 text-sm leading-none text-zinc-500">
|
<div className="flex items-baseline gap-1.5 text-sm leading-none text-zinc-500">
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import { Image } from '@lume/shared/image';
|
import { Image } from '@lume/shared/image';
|
||||||
import { DEFAULT_AVATAR, IMGPROXY_URL } from '@lume/stores/constants';
|
import { DEFAULT_AVATAR, IMGPROXY_URL } from '@lume/stores/constants';
|
||||||
import { useProfile } from '@lume/utils/hooks/useProfile';
|
import { useProfile } from '@lume/utils/hooks/useProfile';
|
||||||
import { shortenKey } from '@lume/utils/shortenKey';
|
|
||||||
|
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import relativeTime from 'dayjs/plugin/relativeTime';
|
import relativeTime from 'dayjs/plugin/relativeTime';
|
||||||
|
import Skeleton from 'react-loading-skeleton';
|
||||||
|
|
||||||
dayjs.extend(relativeTime);
|
dayjs.extend(relativeTime);
|
||||||
|
|
||||||
@ -22,8 +22,9 @@ export const NoteRepostUser = ({ pubkey, time }: { pubkey: string; time: number
|
|||||||
</div>
|
</div>
|
||||||
<div className="flex items-baseline gap-2 text-sm">
|
<div className="flex items-baseline gap-2 text-sm">
|
||||||
<h5 className="font-semibold leading-tight group-hover:underline">
|
<h5 className="font-semibold leading-tight group-hover:underline">
|
||||||
{user?.display_name || user?.name || shortenKey(pubkey)}{' '}
|
{user?.display_name || user?.name || <Skeleton />}
|
||||||
<span className="bg-gradient-to-r from-fuchsia-300 via-orange-100 to-amber-300 bg-clip-text text-transparent">
|
<span className="bg-gradient-to-r from-fuchsia-300 via-orange-100 to-amber-300 bg-clip-text text-transparent">
|
||||||
|
{' '}
|
||||||
reposted
|
reposted
|
||||||
</span>
|
</span>
|
||||||
</h5>
|
</h5>
|
||||||
|
@ -76,7 +76,14 @@ export async function countTotalChannels() {
|
|||||||
// count total notes
|
// count total notes
|
||||||
export async function countTotalNotes() {
|
export async function countTotalNotes() {
|
||||||
const db = await connect();
|
const db = await connect();
|
||||||
const result = await db.select('SELECT COUNT(*) AS "total" FROM notes;');
|
const result = await db.select('SELECT COUNT(*) AS "total" FROM notes WHERE kind IN (1, 6);');
|
||||||
|
return result[0].total;
|
||||||
|
}
|
||||||
|
|
||||||
|
// count total notes
|
||||||
|
export async function countTotalLongNotes() {
|
||||||
|
const db = await connect();
|
||||||
|
const result = await db.select('SELECT COUNT(*) AS "total" FROM notes WHERE kind = 30023;');
|
||||||
return result[0].total;
|
return result[0].total;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,7 +93,22 @@ export async function getNotes(time: number, limit: number, offset: number) {
|
|||||||
|
|
||||||
const notes: any = { data: null, nextCursor: 0 };
|
const notes: any = { data: null, nextCursor: 0 };
|
||||||
const query: any = await db.select(
|
const query: any = await db.select(
|
||||||
`SELECT * FROM notes WHERE created_at <= "${time}" GROUP BY parent_id ORDER BY created_at DESC LIMIT "${limit}" OFFSET "${offset}";`
|
`SELECT * FROM notes WHERE created_at <= "${time}" AND kind IN (1, 6) GROUP BY parent_id ORDER BY created_at DESC LIMIT "${limit}" OFFSET "${offset}";`
|
||||||
|
);
|
||||||
|
|
||||||
|
notes['data'] = query;
|
||||||
|
notes['nextCursor'] = offset + limit;
|
||||||
|
|
||||||
|
return notes;
|
||||||
|
}
|
||||||
|
|
||||||
|
// get all long notes
|
||||||
|
export async function getLongNotes(time: number, limit: number, offset: number) {
|
||||||
|
const db = await connect();
|
||||||
|
|
||||||
|
const notes: any = { data: null, nextCursor: 0 };
|
||||||
|
const query: any = await db.select(
|
||||||
|
`SELECT * FROM notes WHERE created_at <= "${time}" AND kind = 30023 GROUP BY parent_id ORDER BY created_at DESC LIMIT "${limit}" OFFSET "${offset}";`
|
||||||
);
|
);
|
||||||
|
|
||||||
notes['data'] = query;
|
notes['data'] = query;
|
||||||
|
Loading…
Reference in New Issue
Block a user