feat(GODT-2261): sync progress in GUI.

This commit is contained in:
Xavier Michelon
2023-02-21 15:25:50 +01:00
parent 5007d451c2
commit 89112baf96
34 changed files with 3243 additions and 606 deletions

File diff suppressed because it is too large Load Diff

View File

@ -449,6 +449,9 @@ message UserEvent {
UserBadEvent userBadEvent = 4;
UsedBytesChangedEvent usedBytesChangedEvent = 5;
ImapLoginFailedEvent imapLoginFailedEvent = 6;
SyncStartedEvent syncStartedEvent = 7;
SyncFinishedEvent syncFinishedEvent = 8;
SyncProgressEvent syncProgressEvent = 9;
}
}
@ -478,6 +481,21 @@ message ImapLoginFailedEvent {
string username = 1;
}
message SyncStartedEvent {
string userID = 1;
}
message SyncFinishedEvent {
string userID = 1;
}
message SyncProgressEvent {
string userID = 1;
double progress = 2;
int64 elapsedMs = 3;
int64 remainingMs = 4;
}
//**********************************************************
// Generic errors
//**********************************************************

View File

@ -185,6 +185,23 @@ func newIMAPLoginFailedEvent(username string) *StreamEvent {
return userEvent(&UserEvent{Event: &UserEvent_ImapLoginFailedEvent{ImapLoginFailedEvent: &ImapLoginFailedEvent{Username: username}}})
}
func NewSyncStartedEvent(userID string) *StreamEvent {
return userEvent(&UserEvent{Event: &UserEvent_SyncStartedEvent{SyncStartedEvent: &SyncStartedEvent{UserID: userID}}})
}
func NewSyncFinishedEvent(userID string) *StreamEvent {
return userEvent(&UserEvent{Event: &UserEvent_SyncFinishedEvent{SyncFinishedEvent: &SyncFinishedEvent{UserID: userID}}})
}
func NewSyncProgressEvent(userID string, progress float64, elapsedMs, remainingMs int64) *StreamEvent {
return userEvent(&UserEvent{Event: &UserEvent_SyncProgressEvent{SyncProgressEvent: &SyncProgressEvent{
UserID: userID,
Progress: progress,
ElapsedMs: elapsedMs,
RemainingMs: remainingMs,
}}})
}
func NewGenericErrorEvent(errorCode ErrorCode) *StreamEvent {
return genericErrorEvent(&GenericErrorEvent{Code: errorCode})
}

View File

@ -323,6 +323,15 @@ func (s *Service) watchEvents() {
case events.UserBadEvent:
_ = s.SendEvent(NewUserBadEvent(event.UserID, event.Error.Error()))
case events.SyncStarted:
_ = s.SendEvent(NewSyncStartedEvent(event.UserID))
case events.SyncFinished:
_ = s.SendEvent(NewSyncFinishedEvent(event.UserID))
case events.SyncProgress:
_ = s.SendEvent(NewSyncProgressEvent(event.UserID, event.Progress, event.Elapsed.Milliseconds(), event.Remaining.Milliseconds()))
case events.UpdateLatest:
safe.RLock(func() {
s.latest = event.Version