Skip to content
Snippets Groups Projects
Commit 07c3bbc7 authored by Richard T. Carback III's avatar Richard T. Carback III
Browse files

First Pass notifications

parent 3af68e2e
Branches
No related tags found
2 merge requests!114Notifications,!109Project/haven beta
......@@ -7,8 +7,8 @@ require (
github.com/hack-pad/go-indexeddb v0.2.0
github.com/pkg/errors v0.9.1
github.com/spf13/jwalterweatherman v1.1.0
gitlab.com/elixxir/client/v4 v4.6.4-0.20230519223444-1d981a1d95aa
gitlab.com/elixxir/crypto v0.0.7-0.20230519214355-b10a9f95d395
gitlab.com/elixxir/client/v4 v4.6.4-0.20230522213235-dc7d3feb05b9
gitlab.com/elixxir/crypto v0.0.7-0.20230522190154-5cbcf67f4b39
gitlab.com/elixxir/primitives v0.0.3-0.20230214180039-9a25e2d3969c
gitlab.com/xx_network/crypto v0.0.5-0.20230214003943-8a09396e95dd
gitlab.com/xx_network/primitives v0.0.4-0.20230310205521-c440e68e34c4
......
......@@ -529,6 +529,10 @@ gitlab.com/elixxir/client/v4 v4.6.3 h1:oUsm5cn2Vnfqz+xwGYKrqFkPNN3sDAyp00EPGhUIA
gitlab.com/elixxir/client/v4 v4.6.3/go.mod h1:G+lN+LvQPGcm5BQnrhnqT1xiRIAzH3OffAM+5oI9SUg=
gitlab.com/elixxir/client/v4 v4.6.4-0.20230519223444-1d981a1d95aa h1:PJylTJ4ol3p3Si9cipFmhhWo0YD4VXMrbHQODJ9ACKE=
gitlab.com/elixxir/client/v4 v4.6.4-0.20230519223444-1d981a1d95aa/go.mod h1:rDC4sLKgj5kuuiJRp8bD1M7r0mlb0ib7q8q1Euct9/k=
gitlab.com/elixxir/client/v4 v4.6.4-0.20230522204511-a198ba2e5749 h1:mFhb9/TDAtmvuDtBL70vvQCwg7OGSWcCLxXcqcfG3rQ=
gitlab.com/elixxir/client/v4 v4.6.4-0.20230522204511-a198ba2e5749/go.mod h1:rDC4sLKgj5kuuiJRp8bD1M7r0mlb0ib7q8q1Euct9/k=
gitlab.com/elixxir/client/v4 v4.6.4-0.20230522213235-dc7d3feb05b9 h1:/g+OA8nsI0LwY1NgR7WPOAztengA2UqrY7xXZarmwgk=
gitlab.com/elixxir/client/v4 v4.6.4-0.20230522213235-dc7d3feb05b9/go.mod h1:trGefpFqH2+kx4/uEV+yyiEWpGq3AhRMnuBQDhDQKMM=
gitlab.com/elixxir/comms v0.0.4-0.20230310205528-f06faa0d2f0b h1:8AVK93UEs/aufoqtFgyMVt9gf0oJ8F4pA60ZvEVvG+s=
gitlab.com/elixxir/comms v0.0.4-0.20230310205528-f06faa0d2f0b/go.mod h1:z+qW0D9VpY5QKTd7wRlb5SK4kBNqLYsa4DXBcUXue9Q=
gitlab.com/elixxir/comms v0.0.4-0.20230519211512-4a998f4b0938 h1:f27+QUFiGWrprKm+fstOg3ABkYLpWcZi3+8Lf5eDnqY=
......@@ -537,6 +541,8 @@ gitlab.com/elixxir/crypto v0.0.7-0.20230413162806-a99ec4bfea32 h1:Had0F7rMPgJJ2B
gitlab.com/elixxir/crypto v0.0.7-0.20230413162806-a99ec4bfea32/go.mod h1:/SLOlvkYVVJf6IU+vEjMLnS7cjjcoTlPV45g6tv6INc=
gitlab.com/elixxir/crypto v0.0.7-0.20230519214355-b10a9f95d395 h1:aOoL0oyocmLUbCBXgF52QhtBXvAi+eXM1d0DrDsFkIg=
gitlab.com/elixxir/crypto v0.0.7-0.20230519214355-b10a9f95d395/go.mod h1:IYInxKr5Q7EH3oNhg1QX1/sTTRNi7L0JkcyfdRegoio=
gitlab.com/elixxir/crypto v0.0.7-0.20230522190154-5cbcf67f4b39 h1:cU8066kdJRH88GUetdoYfT4ATg+uzSyquhHbVcbxw7Q=
gitlab.com/elixxir/crypto v0.0.7-0.20230522190154-5cbcf67f4b39/go.mod h1:IYInxKr5Q7EH3oNhg1QX1/sTTRNi7L0JkcyfdRegoio=
gitlab.com/elixxir/ekv v0.2.1 h1:dtwbt6KmAXG2Tik5d60iDz2fLhoFBgWwST03p7T+9Is=
gitlab.com/elixxir/ekv v0.2.1/go.mod h1:USLD7xeDnuZEavygdrgzNEwZXeLQJK/w1a+htpN+JEU=
gitlab.com/elixxir/ekv v0.3.1-0.20230504190918-f5e96603c2e0 h1:4d2vg4Sh3N5mR1ta152cg6ybPWHYqsPtkEyJKaDYGnw=
......
......@@ -100,6 +100,11 @@ func setGlobals() {
js.Global().Set("InitializeBackup", js.FuncOf(wasm.InitializeBackup))
js.Global().Set("ResumeBackup", js.FuncOf(wasm.ResumeBackup))
// wasm/notifications.go
js.Global().Set("LoadNotifications", js.FuncOf(wasm.LoadNotifications))
js.Global().Set("LoadNotificationsDummy",
js.FuncOf(wasm.LoadNotificationsDummy))
// wasm/channels.go
js.Global().Set("GenerateChannelIdentity",
js.FuncOf(wasm.GenerateChannelIdentity))
......
......@@ -17,6 +17,7 @@ import (
"syscall/js"
"gitlab.com/elixxir/client/v4/channels"
"gitlab.com/elixxir/primitives/notifications"
channelsDb "gitlab.com/elixxir/xxdk-wasm/indexedDb/worker/channels"
"gitlab.com/elixxir/client/v4/bindings"
......@@ -1454,6 +1455,88 @@ func (cm *ChannelsManager) GetMutedUsers(_ js.Value, args []js.Value) any {
return utils.CopyBytesToJS(mutedUsers)
}
////////////////////////////////////////////////////////////////////////////////
// Notifications //
////////////////////////////////////////////////////////////////////////////////
// GetNotificationLevel implements
// [bindings.ChannelsManager.GetNotificationLevel]
//
// Parameters:
// - args[0] - channelIDBytes - The marshalled bytes of the
// channel's [id.ID] (Uint8Array)
//
// Returns:
// - int - The [channels.NotificationLevel] for the channel.
// throws an error if there is an issue
func (cm *ChannelsManager) GetNotificationLevel(_ js.Value,
args []js.Value) any {
channelIDBytes := utils.CopyBytesToGo(args[0])
level, err := cm.api.GetNotificationLevel(channelIDBytes)
if err != nil {
utils.Throw(utils.TypeError, err)
return nil
}
return level
}
// SetMobileNotificationsLevel implements
// [bindings.ChannelsManager.SetMobileNotificationsLevel]
//
// Parameters:
// - args[0] - channelIDBytes - The marshaled bytes of the channel's [id.ID]
// (Uint8Array).
// - args[1] - level - The [channels.NotificationLevel] to set for
// the channel.
// - args[2] - status - The [notifications.NotificationState] to set
// for the channel.
// - args[3] - push - True to enable push notifications and false to
// only have in-app notifications.
//
// Returns nothing or throws an error
func (cm *ChannelsManager) SetMobileNotificationsLevel(_ js.Value,
args []js.Value) any {
channelIDBytes := utils.CopyBytesToGo(args[0])
level := args[1].Int()
status := args[2].Int()
push := args[3].Bool()
err := cm.api.SetMobileNotificationsLevel(channelIDBytes, level,
status, push)
if err != nil {
utils.Throw(utils.TypeError, err)
}
return nil
}
// GetNotificationReportsForMe implements
// [bindings.GetNotificationsReportsForMe]
//
// Parameters:
// - args[0] - notificationFilterJSON - JSON of a slice of
// [channels.NotificationFilter] (Uint8Array).
// - args[1] - notificationDataJSON - JSON of a slice of
// [notifications.Data] (Uint8Array).
//
// Returns:
// - []byte - JSON of a slice of [channels.NotificationReport].
// Throws an error if one occurs
func GetNotificationReportsForMe(_ js.Value, args []js.Value) any {
notificationFilterJSON := utils.CopyBytesToGo(args[0])
notificationDataJSON := utils.CopyBytesToGo(args[1])
nrs, err := bindings.GetNotificationReportsForMe(notificationFilterJSON,
notificationDataJSON)
if err != nil {
utils.Throw(utils.TypeError, err)
return nil
}
return utils.CopyBytesToJS(nrs)
}
////////////////////////////////////////////////////////////////////////////////
// Admin Management //
////////////////////////////////////////////////////////////////////////////////
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment