fix(archives): Skip importing the archives for community when user not a member (#4006)
This commit is contained in:
parent
3bacb84a02
commit
5e8300d6a1
|
@ -10,4 +10,5 @@ var (
|
|||
ErrNotImplemented = errors.New("not implemented")
|
||||
ErrContactNotFound = errors.New("contact not found")
|
||||
ErrCommunityIDEmpty = errors.New("community ID is empty")
|
||||
ErrUserNotMember = errors.New("user not a member")
|
||||
)
|
||||
|
|
|
@ -3090,6 +3090,21 @@ func (m *Messenger) enableHistoryArchivesImportAfterDelay() {
|
|||
}()
|
||||
}
|
||||
|
||||
func (m *Messenger) checkIfIMemberOfCommunity(communityID types.HexBytes) error {
|
||||
community, err := m.communitiesManager.GetByID(communityID)
|
||||
if err != nil {
|
||||
m.communitiesManager.LogStdout("couldn't get community to import archives", zap.Error(err))
|
||||
return err
|
||||
}
|
||||
|
||||
if !community.HasMember(&m.identity.PublicKey) {
|
||||
m.communitiesManager.LogStdout("can't import archives when user not a member of community")
|
||||
return ErrUserNotMember
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *Messenger) resumeHistoryArchivesImport(communityID types.HexBytes) error {
|
||||
archiveIDsToImport, err := m.communitiesManager.GetMessageArchiveIDsToImport(communityID)
|
||||
if err != nil {
|
||||
|
@ -3100,6 +3115,11 @@ func (m *Messenger) resumeHistoryArchivesImport(communityID types.HexBytes) erro
|
|||
return nil
|
||||
}
|
||||
|
||||
err = m.checkIfIMemberOfCommunity(communityID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
currentTask := m.communitiesManager.GetHistoryArchiveDownloadTask(communityID.String())
|
||||
// no need to resume imports if there's already a task ongoing
|
||||
if currentTask != nil {
|
||||
|
@ -3161,7 +3181,10 @@ importMessageArchivesLoop:
|
|||
m.communitiesManager.LogStdout("interrupted importing history archive messages")
|
||||
return nil
|
||||
case <-importTicker.C:
|
||||
|
||||
err := m.checkIfIMemberOfCommunity(communityID)
|
||||
if err != nil {
|
||||
break importMessageArchivesLoop
|
||||
}
|
||||
archiveIDsToImport, err := m.communitiesManager.GetMessageArchiveIDsToImport(communityID)
|
||||
if err != nil {
|
||||
m.communitiesManager.LogStdout("couldn't get message archive IDs to import", zap.Error(err))
|
||||
|
|
|
@ -1306,6 +1306,11 @@ func (m *Messenger) downloadAndImportHistoryArchives(id types.HexBytes, magnetli
|
|||
m.communitiesManager.LogStdout("couldn't update last seen magnetlink", zap.Error(err))
|
||||
}
|
||||
|
||||
err = m.checkIfIMemberOfCommunity(id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
err = m.importHistoryArchives(id, cancel)
|
||||
if err != nil {
|
||||
m.communitiesManager.LogStdout("failed to import history archives", zap.Error(err))
|
||||
|
|
Loading…
Reference in New Issue