add notification widget
This commit is contained in:
@@ -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 }));
|
||||
},
|
||||
}));
|
||||
|
||||
@@ -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: '',
|
||||
|
||||
Reference in New Issue
Block a user