feat(api,userbot,frontend): search peers without chats and start tracking them
This commit is contained in:
1 parent
dcf95bd9d4
commit
92fd20137e
21 files changed
+936
-65
No files matched your search
@@ -0,0 +1,41 @@
|
||||
import { getDiscoverItem } from "$lib/api/endpoints";
|
||||
import type { DiscoverItem } from "$lib/api/types";
|
||||
import { accounts } from "$lib/stores/accounts.svelte";
|
||||
|
||||
function createDiscover() {
|
||||
let items = $state<Record<number, DiscoverItem>>({});
|
||||
let account: number | null = null;
|
||||
const pending = new Set<number>();
|
||||
|
||||
function syncAccount() {
|
||||
if (accounts.selectedId !== account) {
|
||||
account = accounts.selectedId;
|
||||
items = {};
|
||||
pending.clear();
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
get(chatId: number): DiscoverItem | undefined {
|
||||
return items[chatId];
|
||||
},
|
||||
set(item: DiscoverItem) {
|
||||
items = { ...items, [item.chat_id]: item };
|
||||
},
|
||||
async ensure(chatId: number) {
|
||||
syncAccount();
|
||||
if (account === null || items[chatId] || pending.has(chatId)) {
|
||||
return;
|
||||
}
|
||||
pending.add(chatId);
|
||||
try {
|
||||
const item = await getDiscoverItem(chatId);
|
||||
items = { ...items, [chatId]: item };
|
||||
} finally {
|
||||
pending.delete(chatId);
|
||||
}
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
export const discover = createDiscover();
|
||||
Reference in new issue
Block a user