add notification widget

This commit is contained in:
2023-10-25 09:23:20 +07:00
parent 507628bcaa
commit dcacf23625
21 changed files with 268 additions and 467 deletions

View File

@@ -3,29 +3,20 @@ import { create } from 'zustand';
interface ActivitiesState {
activities: Array<NDKEvent>;
totalNewActivities: number;
setActivities: (events: NDKEvent[], lastLogin: number) => void;
setActivities: (events: NDKEvent[]) => void;
addActivity: (event: NDKEvent) => void;
clearTotalNewActivities: () => void;
}
export const useActivities = create<ActivitiesState>((set) => ({
activities: null,
totalNewActivities: 0,
setActivities: (events: NDKEvent[], lastLogin: number) => {
const totalLatest = events.filter((ev) => ev.created_at > lastLogin)?.length ?? 0;
setActivities: (events: NDKEvent[]) => {
set(() => ({
activities: events,
totalNewActivities: totalLatest,
}));
},
addActivity: (event: NDKEvent) => {
set((state) => ({
activities: state.activities ? [event, ...state.activities] : [event],
totalNewActivities: state.totalNewActivities++,
}));
},
clearTotalNewActivities: () => {
set(() => ({ totalNewActivities: 0 }));
},
}));

View File

@@ -24,6 +24,7 @@ export const WidgetKinds = {
user: 104,
thread: 105,
follows: 106,
notification: 107,
},
global: {
feeds: 1000,
@@ -109,6 +110,11 @@ export const DefaultWidgets: Array<WidgetGroup> = [
{
title: 'Other',
data: [
{
kind: WidgetKinds.local.notification,
title: 'Notification',
description: 'Everything happens around you',
},
{
kind: WidgetKinds.other.learnNostr,
title: 'Learn Nostr',
@@ -125,9 +131,14 @@ export const useWidgets = create<WidgetState>()(
isFetched: false,
fetchWidgets: async (db: LumeStorage) => {
const dbWidgets = await db.getWidgets();
console.log('db widgets: ', dbWidgets);
// default: add network widget
dbWidgets.unshift({
id: '9998',
title: 'Notification',
content: '',
kind: WidgetKinds.local.notification,
});
dbWidgets.unshift({
id: '9999',
title: '',