Merge pull request 'Improve Logic for Handelling Interrupted Downloads' (#797) from post-stable-fixes into trunk
continuous-integration/drone/push Build is pending Details

Reviewed-on: #797
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
This commit is contained in:
Sarah Jamie Lewis 2024-01-04 20:16:54 +00:00
commit efb9ce94e7
4 changed files with 26 additions and 28 deletions

View File

@ -12,19 +12,19 @@ themes:
font: 0xFFFFFF
settings: 0xFFFDFF
accent: 0x9E6A56
accentAlt: 0x845A48
accentAlt: 0x9E6A56
theme:
backgroundMainColor: background # darkGreyPurple
backgroundPaneColor: header # darkGreyPurple
topbarColor: header # darkGreyPurple
mainTextColor: font # whiteishPurple
defaultButtonColor: accent # hotPink
textfieldHintColor: mainTextColor # TODO pick
toolbarIconColor: settings # whiteishPurple
messageFromMeBackgroundColor: userBubble # mauvePurple
messageFromMeTextColor: font # whiteishPurple
messageFromOtherBackgroundColor: peerBubble # deepPurple
messageFromOtherTextColor: font # whiteishPurple
backgroundMainColor: background
backgroundPaneColor: header
topbarColor: header
mainTextColor: font
defaultButtonColor: accent
textfieldHintColor: mainTextColor
toolbarIconColor: settings
messageFromMeBackgroundColor: userBubble
messageFromMeTextColor: font
messageFromOtherBackgroundColor: peerBubble
messageFromOtherTextColor: font
textfieldBackgroundColor: peerBubble
textfieldBorderColor: userBubble
backgroundHilightElementColor: accent
@ -45,3 +45,4 @@ themes:
portraitProfileBadgeColor: accent
portraitProfileBadgeTextColor: mainTextColor
dropShadowColor: accentAlt
chatReactionIconColor: accentAlt

View File

@ -3,12 +3,22 @@ class FileDownloadProgress {
int chunksTotal = 1;
bool complete = false;
bool gotManifest = false;
bool interrupted = false;
bool _interrupted = false;
// we keep track of both an explicit interrupt flag (for when a request fails or is explicitly cancelled)
set interrupted(isInterrupted) {
this._interrupted = isInterrupted;
}
// but we have a fuzzy get which depends on lastUpdate, if the file isn't complete, but the last update was more
// that 30 seconds ago, we consider this download as failed.
get interrupted => _interrupted || (DateTime.now().difference(lastUpdate).abs().inSeconds > 30 && !complete);
String? downloadedTo;
DateTime? timeStart;
DateTime? timeEnd;
DateTime? requested;
DateTime lastUpdate = DateTime.now();
DateTime lastUpdate = DateTime.fromMillisecondsSinceEpoch(0);
FileDownloadProgress(this.chunksTotal, this.timeStart);

View File

@ -383,19 +383,6 @@ class ProfileInfoState extends ChangeNotifier {
if (this._downloads[fileKey]!.interrupted) {
return true;
}
if (this._downloads[fileKey]!.requested != null) {
if (DateTime.now().difference(this._downloads[fileKey]!.requested!) > Duration(minutes: 1)) {
this._downloads[fileKey]!.requested = null;
this._downloads[fileKey]!.interrupted = true;
return true;
}
if (DateTime.now().difference(this._downloads[fileKey]!.lastUpdate) > Duration(minutes: 1)) {
this._downloads[fileKey]!.requested = null;
this._downloads[fileKey]!.interrupted = true;
return true;
}
}
}
return false;
}

View File

@ -139,6 +139,7 @@ class YmlTheme extends OpaqueThemeType {
get chatImage => getImage("chatImage") ?? fallbackTheme.chatImage;
ImageProvider loadImage(String key) {
File f = File(key);
if (f.existsSync()) {
@ -147,5 +148,4 @@ class YmlTheme extends OpaqueThemeType {
return AssetImage(key);
}
}
}