Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
X
xxdk-wasm
Manage
Activity
Members
Labels
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Terraform modules
Analyze
Contributor analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
elixxir
xxdk-wasm
Merge requests
!13
Something went wrong on our end
delete old messages when channel is left
Code
Review changes
Check out branch
Download
Patches
Plain diff
Merged
delete old messages when channel is left
XX-4247/DeleteOldMessages
into
release
Overview
1
Commits
3
Pipelines
0
Changes
4
Merged
Jake Taylor
requested to merge
XX-4247/DeleteOldMessages
into
release
2 years ago
Overview
1
Commits
3
Pipelines
0
Changes
4
Expand
1
0
Merge request reports
Viewing commit
f3e363cf
Prev
Next
Show latest version
4 files
+
113
−
8
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
4
Search (e.g. *.vue) (Ctrl+P)
f3e363cf
delete old messages when channel is left
· f3e363cf
Jake Taylor
authored
2 years ago
indexedDb/implementation.go
+
52
−
1
Options
@@ -20,12 +20,12 @@ import (
"github.com/hack-pad/go-indexeddb/idb"
"github.com/pkg/errors"
jww
"github.com/spf13/jwalterweatherman"
"gitlab.com/elixxir/xxdk-wasm/utils"
"gitlab.com/elixxir/client/channels"
"gitlab.com/elixxir/client/cmix/rounds"
cryptoBroadcast
"gitlab.com/elixxir/crypto/broadcast"
cryptoChannel
"gitlab.com/elixxir/crypto/channel"
"gitlab.com/elixxir/xxdk-wasm/utils"
"gitlab.com/xx_network/primitives/id"
)
@@ -141,9 +141,60 @@ func (w *wasmModel) LeaveChannel(channelID *id.ID) {
"Deleting Channel failed: %+v"
,
err
))
return
}
// Clean up lingering data
err
=
w
.
deleteMsgByChannel
(
channelID
)
if
err
!=
nil
{
jww
.
ERROR
.
Printf
(
"%+v"
,
errors
.
WithMessagef
(
parentErr
,
"Deleting Channel's Message data failed: %+v"
,
err
))
return
}
jww
.
DEBUG
.
Printf
(
"Successfully deleted channel: %s"
,
channelID
)
}
// deleteMsgByChannel is a private helper that uses messageStoreChannelIndex
// to delete all Message with the given Channel ID.
func
(
w
*
wasmModel
)
deleteMsgByChannel
(
channelID
*
id
.
ID
)
error
{
parentErr
:=
errors
.
New
(
"failed to deleteMsgByChannel"
)
// Prepare the Transaction
txn
,
err
:=
w
.
db
.
Transaction
(
idb
.
TransactionReadWrite
,
messageStoreName
)
if
err
!=
nil
{
return
errors
.
WithMessagef
(
parentErr
,
"Unable to create Transaction: %+v"
,
err
)
}
store
,
err
:=
txn
.
ObjectStore
(
messageStoreName
)
if
err
!=
nil
{
return
errors
.
WithMessagef
(
parentErr
,
"Unable to get ObjectStore: %+v"
,
err
)
}
index
,
err
:=
store
.
Index
(
messageStoreChannelIndex
)
if
err
!=
nil
{
return
errors
.
WithMessagef
(
parentErr
,
"Unable to get Index: %+v"
,
err
)
}
// Perform the operation
channelIdStr
:=
base64
.
StdEncoding
.
EncodeToString
(
channelID
.
Marshal
())
keyRange
,
err
:=
idb
.
NewKeyRangeOnly
(
js
.
ValueOf
(
channelIdStr
))
cursorRequest
,
err
:=
index
.
OpenCursorRange
(
keyRange
,
idb
.
CursorNext
)
if
err
!=
nil
{
return
errors
.
WithMessagef
(
parentErr
,
"Unable to open Cursor: %+v"
,
err
)
}
ctx
,
cancel
:=
newContext
()
err
=
cursorRequest
.
Iter
(
ctx
,
func
(
cursor
*
idb
.
CursorWithValue
)
error
{
_
,
err
:=
cursor
.
Delete
()
return
err
})
cancel
()
if
err
!=
nil
{
return
errors
.
WithMessagef
(
parentErr
,
"Unable to dump ObjectStore: %+v"
,
err
)
}
return
nil
}
// ReceiveMessage is called whenever a message is received on a given channel.
//
// It may be called multiple times on the same message; it is incumbent on the
Loading