diff --git a/lib/apis/record_api.dart b/lib/apis/record_api.dart index 9501c37..1999ea9 100644 --- a/lib/apis/record_api.dart +++ b/lib/apis/record_api.dart @@ -10,7 +10,7 @@ import 'package:flutter/material.dart'; import 'package:contacts_plus_plus/clients/api_client.dart'; import 'package:contacts_plus_plus/models/records/asset_upload_data.dart'; -import 'package:contacts_plus_plus/models/records/neos_db_asset.dart'; +import 'package:contacts_plus_plus/models/records/resonite_db_asset.dart'; import 'package:contacts_plus_plus/models/records/preprocess_status.dart'; import 'package:contacts_plus_plus/models/records/record.dart'; import 'package:http_parser/http_parser.dart'; diff --git a/lib/clients/inventory_client.dart b/lib/clients/inventory_client.dart index 930612f..59eb942 100644 --- a/lib/clients/inventory_client.dart +++ b/lib/clients/inventory_client.dart @@ -2,16 +2,16 @@ import 'dart:async'; import 'package:contacts_plus_plus/apis/record_api.dart'; import 'package:contacts_plus_plus/clients/api_client.dart'; -import 'package:contacts_plus_plus/models/inventory/neos_path.dart'; +import 'package:contacts_plus_plus/models/inventory/resonite_directory.dart'; import 'package:contacts_plus_plus/models/records/record.dart'; import 'package:flutter/material.dart'; class InventoryClient extends ChangeNotifier { final ApiClient apiClient; - Future? _currentDirectory; + Future? _currentDirectory; - Future? get directoryFuture => _currentDirectory; + Future? get directoryFuture => _currentDirectory; InventoryClient({required this.apiClient}); @@ -51,7 +51,7 @@ class InventoryClient extends ChangeNotifier { } Future> _getDirectory(Record record) async { - NeosDirectory? dir; + ResoniteDirectory? dir; try { dir = await _currentDirectory; } catch (_) {} @@ -59,7 +59,7 @@ class InventoryClient extends ChangeNotifier { if (dir == null || record.isRoot) { records = await RecordApi.getUserRecordsAt( apiClient, - path: NeosDirectory.rootName, + path: ResoniteDirectory.rootName, ); } else { if (record.recordType == RecordType.link) { @@ -79,12 +79,12 @@ class InventoryClient extends ChangeNotifier { final rootRecord = Record.inventoryRoot(); final rootFuture = _getDirectory(rootRecord).then( (records) { - final rootDir = NeosDirectory( + final rootDir = ResoniteDirectory( record: rootRecord, children: [], ); rootDir.children.addAll( - records.map((e) => NeosDirectory.fromRecord(record: e, parent: rootDir)).toList(), + records.map((e) => ResoniteDirectory.fromRecord(record: e, parent: rootDir)).toList(), ); return rootDir; }, @@ -103,8 +103,8 @@ class InventoryClient extends ChangeNotifier { _currentDirectory = _getDirectory(dir.record).then( (records) { - final children = records.map((record) => NeosDirectory.fromRecord(record: record, parent: dir)).toList(); - final newDir = NeosDirectory(record: dir.record, children: children, parent: dir.parent); + final children = records.map((record) => ResoniteDirectory.fromRecord(record: record, parent: dir)).toList(); + final newDir = ResoniteDirectory(record: dir.record, children: children, parent: dir.parent); final parentIdx = dir.parent?.children.indexOf(dir) ?? -1; if (parentIdx != -1) { @@ -142,7 +142,7 @@ class InventoryClient extends ChangeNotifier { _currentDirectory = _getDirectory(record).then( (records) { childDir.children.clear(); - childDir.children.addAll(records.map((record) => NeosDirectory.fromRecord(record: record, parent: childDir))); + childDir.children.addAll(records.map((record) => ResoniteDirectory.fromRecord(record: record, parent: childDir))); return childDir; }, ).onError((error, stackTrace) { diff --git a/lib/clients/messaging_client.dart b/lib/clients/messaging_client.dart index 81c3657..82a2f1a 100644 --- a/lib/clients/messaging_client.dart +++ b/lib/clients/messaging_client.dart @@ -238,7 +238,7 @@ class MessagingClient extends ChangeNotifier { Future _setupHub() async { if (!_apiClient.isAuthenticated) { - _logger.info("Tried to connect to Neos Hub without authentication, this is probably fine for now."); + _logger.info("Tried to connect to Resonite Hub without authentication, this is probably fine for now."); return; } _hubManager.setHeaders(_apiClient.authorizationHeader); @@ -247,6 +247,7 @@ class MessagingClient extends ChangeNotifier { _hubManager.setHandler(EventTarget.receiveMessage, _onReceiveMessage); _hubManager.setHandler(EventTarget.messagesRead, _onMessagesRead); _hubManager.setHandler(EventTarget.receiveStatusUpdate, _onReceiveStatusUpdate); + _hubManager.setHandler(EventTarget.receiveSessionUpdate, _onReceiveSessionUpdate); await _hubManager.start(); _hubManager.send( @@ -311,4 +312,6 @@ class MessagingClient extends ChangeNotifier { } notifyListeners(); } + + void _onReceiveSessionUpdate(List args) {} } diff --git a/lib/hub_manager.dart b/lib/hub_manager.dart index 4c0781d..20a9ef9 100644 --- a/lib/hub_manager.dart +++ b/lib/hub_manager.dart @@ -30,7 +30,7 @@ class HubManager { void _onDisconnected(error) async { _wsChannel = null; - _logger.warning("Neos Hub connection died with error '$error', reconnecting..."); + _logger.warning("Hub connection died with error '$error', reconnecting..."); await start(); } @@ -41,7 +41,7 @@ class HubManager { _isConnecting = true; _wsChannel = await _tryConnect(); _isConnecting = false; - _logger.info("Connected to Neos Hub."); + _logger.info("Connected to Resonite Hub."); _wsChannel!.done.then((error) => _onDisconnected(error)); _wsChannel!.listen(_handleEvent, onDone: () => _onDisconnected("Connection closed."), onError: _onDisconnected); _wsChannel!.add(_negotiationPacket); @@ -124,7 +124,7 @@ class HubManager { if (responseHandler != null) { _responseHandlers[invocationId] = responseHandler; } - if (_wsChannel == null) throw "Neos Hub is not connected"; + if (_wsChannel == null) throw "Resonite Hub is not connected"; _wsChannel!.add(jsonEncode(data) + _eofChar); } diff --git a/lib/models/inventory/neos_path.dart b/lib/models/inventory/neos_path.dart deleted file mode 100644 index 4f26285..0000000 --- a/lib/models/inventory/neos_path.dart +++ /dev/null @@ -1,64 +0,0 @@ -import 'package:collection/collection.dart'; -import 'package:contacts_plus_plus/stack.dart'; -import 'package:contacts_plus_plus/models/records/record.dart'; - - -class NeosPath { - static const _root = "Inventory"; - final Stack _pathStack = Stack(); - - String get absolute { - if (_pathStack.isEmpty) return _root; - var path = _pathStack.entries.join("\\"); - return "$_root\\$path"; - } - - NeosDirectory pop() => _pathStack.pop(); - - void push(NeosDirectory directory) => _pathStack.push(directory); - - bool get isRoot => _pathStack.isEmpty; - - /* - NeosDirectory get current => _pathStack.peek ?? NeosDirectory(name: _root); - - void populateCurrent(String target, Iterable records) { - var currentDir = _pathStack.peek; - if (currentDir?.name != target) return; - currentDir?.records.addAll(records); - } - */ -} - -class NeosDirectory { - static const rootName = "Inventory"; - - final Record record; - final NeosDirectory? parent; - final List children; - - NeosDirectory({required this.record, this.parent, required this.children}); - - factory NeosDirectory.fromRecord({required Record record, NeosDirectory? parent}) { - return NeosDirectory(record: record, parent: parent, children: []); - } - - @override - String toString() { - return record.name; - } - - bool get isRoot => record.isRoot; - - String get absolutePath => "${parent?.absolutePath ?? ""}/${(record.name)}"; - - List get absolutePathSegments => (parent?.absolutePathSegments ?? []) + [record.name]; - - bool containsRecord(Record record) => children.where((element) => element.record.id == record.id).isNotEmpty; - - List get records => children.map((e) => e.record).toList(); - - bool get isLoaded => children.isNotEmpty; - - NeosDirectory? findChildByRecord(Record record) => children.firstWhereOrNull((element) => element.record.id == record.id); -} diff --git a/lib/models/inventory/resonite_directory.dart b/lib/models/inventory/resonite_directory.dart new file mode 100644 index 0000000..299f1ee --- /dev/null +++ b/lib/models/inventory/resonite_directory.dart @@ -0,0 +1,36 @@ +import 'package:collection/collection.dart'; +import 'package:contacts_plus_plus/stack.dart'; +import 'package:contacts_plus_plus/models/records/record.dart'; + +class ResoniteDirectory { + static const rootName = "Inventory"; + + final Record record; + final ResoniteDirectory? parent; + final List children; + + ResoniteDirectory({required this.record, this.parent, required this.children}); + + factory ResoniteDirectory.fromRecord({required Record record, ResoniteDirectory? parent}) { + return ResoniteDirectory(record: record, parent: parent, children: []); + } + + @override + String toString() { + return record.name; + } + + bool get isRoot => record.isRoot; + + String get absolutePath => "${parent?.absolutePath ?? ""}/${(record.name)}"; + + List get absolutePathSegments => (parent?.absolutePathSegments ?? []) + [record.name]; + + bool containsRecord(Record record) => children.where((element) => element.record.id == record.id).isNotEmpty; + + List get records => children.map((e) => e.record).toList(); + + bool get isLoaded => children.isNotEmpty; + + ResoniteDirectory? findChildByRecord(Record record) => children.firstWhereOrNull((element) => element.record.id == record.id); +} diff --git a/lib/models/records/asset_diff.dart b/lib/models/records/asset_diff.dart index 775c226..db8858f 100644 --- a/lib/models/records/asset_diff.dart +++ b/lib/models/records/asset_diff.dart @@ -1,5 +1,5 @@ -import 'package:contacts_plus_plus/models/records/neos_db_asset.dart'; +import 'package:contacts_plus_plus/models/records/resonite_db_asset.dart'; class AssetDiff extends ResoniteDBAsset{ final Diff state; diff --git a/lib/models/records/asset_digest.dart b/lib/models/records/asset_digest.dart index 0be8c95..08ba211 100644 --- a/lib/models/records/asset_digest.dart +++ b/lib/models/records/asset_digest.dart @@ -1,7 +1,7 @@ import 'dart:typed_data'; -import 'package:contacts_plus_plus/models/records/neos_db_asset.dart'; +import 'package:contacts_plus_plus/models/records/resonite_db_asset.dart'; import 'package:path/path.dart'; class AssetDigest { diff --git a/lib/models/records/json_template.dart b/lib/models/records/json_template.dart index 4a13bbd..9237aca 100644 --- a/lib/models/records/json_template.dart +++ b/lib/models/records/json_template.dart @@ -2,7 +2,7 @@ import 'package:path/path.dart'; import 'package:uuid/uuid.dart'; class JsonTemplate { - static const String thumbUrl = "neosdb:///8ed80703e48c3d1556093927b67298f3d5e10315e9f782ec56fc49d6366f09b7.webp"; + static const String thumbUrl = "resdb:///8ed80703e48c3d1556093927b67298f3d5e10315e9f782ec56fc49d6366f09b7.webp"; final Map data; JsonTemplate({required this.data}); @@ -2371,7 +2371,7 @@ class JsonTemplate { }, "URL": { "ID": const Uuid().v4(), - "Data": "@neosdb:///3738bf6fc560f7d08d872ce12b06f4d9337ac5da415b6de6008a49ca128658ec" + "Data": "@resdb:///3738bf6fc560f7d08d872ce12b06f4d9337ac5da415b6de6008a49ca128658ec" }, "Readable": { "ID": const Uuid().v4(), @@ -2444,7 +2444,7 @@ class JsonTemplate { }, "URL": { "ID": const Uuid().v4(), - "Data": "@neosdb:///c801b8d2522fb554678f17f4597158b1af3f9be3abd6ce35d5a3112a81e2bf39" + "Data": "@resdb:///c801b8d2522fb554678f17f4597158b1af3f9be3abd6ce35d5a3112a81e2bf39" }, "Padding": { "ID": const Uuid().v4(), @@ -2478,7 +2478,7 @@ class JsonTemplate { }, "URL": { "ID": const Uuid().v4(), - "Data": "@neosdb:///4cac521169034ddd416c6deffe2eb16234863761837df677a910697ec5babd25" + "Data": "@resdb:///4cac521169034ddd416c6deffe2eb16234863761837df677a910697ec5babd25" }, "Padding": { "ID": const Uuid().v4(), @@ -2512,7 +2512,7 @@ class JsonTemplate { }, "URL": { "ID": const Uuid().v4(), - "Data": "@neosdb:///23e7ad7cb0a5a4cf75e07c9e0848b1eb06bba15e8fa9b8cb0579fc823c532927" + "Data": "@resdb:///23e7ad7cb0a5a4cf75e07c9e0848b1eb06bba15e8fa9b8cb0579fc823c532927" }, "Padding": { "ID": const Uuid().v4(), @@ -2546,7 +2546,7 @@ class JsonTemplate { }, "URL": { "ID": const Uuid().v4(), - "Data": "@neosdb:///415dc6290378574135b64c808dc640c1df7531973290c4970c51fdeb849cb0c5" + "Data": "@resdb:///415dc6290378574135b64c808dc640c1df7531973290c4970c51fdeb849cb0c5" }, "Padding": { "ID": const Uuid().v4(), @@ -2580,7 +2580,7 @@ class JsonTemplate { }, "URL": { "ID": const Uuid().v4(), - "Data": "@neosdb:///bcda0bcc22bab28ea4fedae800bfbf9ec76d71cc3b9f851779a35b7e438a839d" + "Data": "@resdb:///bcda0bcc22bab28ea4fedae800bfbf9ec76d71cc3b9f851779a35b7e438a839d" }, "Padding": { "ID": const Uuid().v4(), @@ -2720,7 +2720,7 @@ class JsonTemplate { }, "URL": { "ID": const Uuid().v4(), - "Data": "@neosdb:///274f0d4ea4bce93abc224c9ae9f9a97a9a396b382c5338f71c738d1591dd5c35.webp" + "Data": "@resdb:///274f0d4ea4bce93abc224c9ae9f9a97a9a396b382c5338f71c738d1591dd5c35.webp" }, "FilterMode": { "ID": const Uuid().v4(), diff --git a/lib/models/records/record.dart b/lib/models/records/record.dart index 613f221..24182f9 100644 --- a/lib/models/records/record.dart +++ b/lib/models/records/record.dart @@ -1,7 +1,7 @@ import 'package:contacts_plus_plus/auxiliary.dart'; import 'package:contacts_plus_plus/models/message.dart'; import 'package:contacts_plus_plus/models/records/asset_digest.dart'; -import 'package:contacts_plus_plus/models/records/neos_db_asset.dart'; +import 'package:contacts_plus_plus/models/records/resonite_db_asset.dart'; import 'package:contacts_plus_plus/string_formatter.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -59,7 +59,7 @@ class Record { isListed: false, isForPatreons: false, lastModificationTime: DateTimeX.epoch, - neosDBManifest: [], + resoniteDBManifest: [], lastModifyingUserId: "", lastModifyingMachineId: "", creationTime: DateTimeX.epoch, @@ -100,7 +100,7 @@ class Record { final int rating; final int randomOrder; final List manifest; - final List neosDBManifest; + final List resoniteDBManifest; final String url; final bool isValidOwnerId; final bool isValidRecordId; @@ -122,7 +122,7 @@ class Record { required this.isListed, required this.isForPatreons, required this.lastModificationTime, - required this.neosDBManifest, + required this.resoniteDBManifest, required this.lastModifyingUserId, required this.lastModifyingMachineId, required this.creationTime, @@ -160,7 +160,7 @@ class Record { isPublic: false, isForPatreons: false, isListed: false, - neosDBManifest: digests.map((e) => e.asset).toList(), + resoniteDBManifest: digests.map((e) => e.asset).toList(), globalVersion: 0, localVersion: 1, lastModifyingUserId: userId, @@ -173,7 +173,7 @@ class Record { path: '', description: '', manifest: digests.map((e) => e.dbUri).toList(), - url: "neosrec:///$userId/${combinedRecordId.id}", + url: "resrec:///$userId/${combinedRecordId.id}", isValidOwnerId: true, isValidRecordId: true, visits: 0, @@ -199,14 +199,14 @@ class Record { isForPatreons: map["isForPatreons"] ?? false, isListed: map["isListed"] ?? false, lastModificationTime: DateTime.tryParse(map["lastModificationTime"]) ?? DateTimeX.epoch, - neosDBManifest: (map["neosDBManifest"] as List? ?? []).map((e) => ResoniteDBAsset.fromMap(e)).toList(), + resoniteDBManifest: (map["resoniteDBManifest"] as List? ?? []).map((e) => ResoniteDBAsset.fromMap(e)).toList(), lastModifyingUserId: map["lastModifyingUserId"] ?? "", lastModifyingMachineId: map["lastModifyingMachineId"] ?? "", creationTime: DateTime.tryParse(map["lastModificationTime"]) ?? DateTimeX.epoch, isSynced: map["isSynced"] ?? false, fetchedOn: DateTime.tryParse(map["fetchedOn"] ?? "") ?? DateTimeX.epoch, path: map["path"] ?? "", - manifest: (map["neosDBManifest"] as List? ?? []).map((e) => e.toString()).toList(), + manifest: (map["resoniteDBManifest"] as List? ?? []).map((e) => e.toString()).toList(), url: map["url"] ?? "", isValidOwnerId: map["isValidOwnerId"] == "true", isValidRecordId: map["isValidRecordId"] == "true", @@ -220,7 +220,7 @@ class Record { bool get isRoot => this == _rootRecord; String get linkRecordId { - if (!assetUri.startsWith("neosrec")) { + if (!assetUri.startsWith("resrec")) { throw "Record is not a link."; } @@ -233,11 +233,11 @@ class Record { } String get linkOwnerId { - if (!assetUri.startsWith("neosrec")) { + if (!assetUri.startsWith("resrec")) { throw "Record is not a link."; } - String ownerId = assetUri.replaceFirst("neosrec:///", ""); + String ownerId = assetUri.replaceFirst("resrec:///", ""); final lastSlashIdx = ownerId.lastIndexOf("/"); if (lastSlashIdx == -1) { @@ -265,7 +265,7 @@ class Record { bool? isListed, bool? isDeleted, DateTime? lastModificationTime, - List? neosDBManifest, + List? resoniteDBManifest, String? lastModifyingUserId, String? lastModifyingMachineId, DateTime? creationTime, @@ -296,7 +296,7 @@ class Record { isForPatreons: isForPatreons ?? this.isForPatreons, isListed: isListed ?? this.isListed, lastModificationTime: lastModificationTime ?? this.lastModificationTime, - neosDBManifest: neosDBManifest ?? this.neosDBManifest, + resoniteDBManifest: resoniteDBManifest ?? this.resoniteDBManifest, lastModifyingUserId: lastModifyingUserId ?? this.lastModifyingUserId, lastModifyingMachineId: lastModifyingMachineId ?? this.lastModifyingMachineId, creationTime: creationTime ?? this.creationTime, @@ -330,7 +330,7 @@ class Record { "isForPatreons": isForPatreons, "isListed": isListed, "lastModificationTime": lastModificationTime.toUtc().toIso8601String(), - "neosDBManifest": neosDBManifest.map((e) => e.toMap()).toList(), + "resoniteDBManifest": resoniteDBManifest.map((e) => e.toMap()).toList(), "lastModifyingUserId": lastModifyingUserId, "lastModifyingMachineId": lastModifyingMachineId, "creationTime": creationTime.toUtc().toIso8601String(), diff --git a/lib/models/records/neos_db_asset.dart b/lib/models/records/resonite_db_asset.dart similarity index 100% rename from lib/models/records/neos_db_asset.dart rename to lib/models/records/resonite_db_asset.dart diff --git a/lib/models/session.dart b/lib/models/session.dart index e05d9c3..dce8611 100644 --- a/lib/models/session.dart +++ b/lib/models/session.dart @@ -6,7 +6,7 @@ class Session { final String name; final FormatNode formattedName; final List sessionUsers; - final String thumbnail; + final String thumbnailUrl; final int maxUsers; final bool hasEnded; final bool isValid; @@ -22,7 +22,7 @@ class Session { required this.id, required this.name, required this.sessionUsers, - required this.thumbnail, + required this.thumbnailUrl, required this.maxUsers, required this.hasEnded, required this.isValid, @@ -40,7 +40,7 @@ class Session { id: "", name: "", sessionUsers: const [], - thumbnail: "", + thumbnailUrl: "", maxUsers: 0, hasEnded: true, isValid: false, @@ -60,7 +60,7 @@ class Session { id: map["sessionId"], name: map["name"], sessionUsers: (map["sessionUsers"] as List? ?? []).map((entry) => SessionUser.fromMap(entry)).toList(), - thumbnail: map["thumbnailUrl"] ?? "", + thumbnailUrl: map["thumbnailUrl"] ?? "", maxUsers: map["maxUsers"] ?? 0, hasEnded: map["hasEnded"] ?? false, isValid: map["isValid"] ?? true, @@ -78,7 +78,7 @@ class Session { "sessionId": id, "name": name, "sessionUsers": shallow ? [] : sessionUsers.map((e) => e.toMap()).toList(), - "thumbnail": thumbnail, + "thumbnail": thumbnailUrl, "maxUsers": maxUsers, "hasEnded": hasEnded, "isValid": isValid, diff --git a/lib/models/users/friend.dart b/lib/models/users/friend.dart index dcc8e9d..614131f 100644 --- a/lib/models/users/friend.dart +++ b/lib/models/users/friend.dart @@ -7,7 +7,7 @@ import 'package:flutter/foundation.dart'; class Friend implements Comparable { static const _emptyId = "-1"; - static const _neosBotId = "U-Resonite"; + static const _resoniteBotId = "U-Resonite"; final String id; final String username; final String ownerId; @@ -29,7 +29,7 @@ class Friend implements Comparable { username: map["contactUsername"], ownerId: map["ownerId"] ?? map["id"], // Neos bot status is always offline but should be displayed as online - userStatus: map["id"] == _neosBotId ? userStatus.copyWith(onlineStatus: OnlineStatus.online) : userStatus, + userStatus: map["id"] == _resoniteBotId ? userStatus.copyWith(onlineStatus: OnlineStatus.online) : userStatus, userProfile: UserProfile.fromMap(map["profile"] ?? {}), contactStatus: FriendStatus.fromString(map["contactStatus"]), latestMessageTime: map["latestMessageTime"] == null diff --git a/lib/models/users/user_status.dart b/lib/models/users/user_status.dart index 968bea2..ccba0d7 100644 --- a/lib/models/users/user_status.dart +++ b/lib/models/users/user_status.dart @@ -1,4 +1,3 @@ -import 'package:contacts_plus_plus/config.dart'; import 'package:contacts_plus_plus/models/session.dart'; import 'package:contacts_plus_plus/models/users/online_status.dart'; @@ -75,7 +74,7 @@ class UserStatus { (e) => e.toMap(), ) .toList(), - "neosVersion": appVersion, + "appVersion": appVersion, "outputDevice": outputDevice, "isMobile": isMobile, "compatibilityHash": compatibilityHash, diff --git a/lib/widgets/inventory/inventory_browser.dart b/lib/widgets/inventory/inventory_browser.dart index c224132..4803fc3 100644 --- a/lib/widgets/inventory/inventory_browser.dart +++ b/lib/widgets/inventory/inventory_browser.dart @@ -4,7 +4,7 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:collection/collection.dart'; import 'package:contacts_plus_plus/auxiliary.dart'; import 'package:contacts_plus_plus/clients/inventory_client.dart'; -import 'package:contacts_plus_plus/models/inventory/neos_path.dart'; +import 'package:contacts_plus_plus/models/inventory/resonite_directory.dart'; import 'package:contacts_plus_plus/models/records/record.dart'; import 'package:contacts_plus_plus/widgets/default_error_widget.dart'; import 'package:contacts_plus_plus/widgets/inventory/object_inventory_tile.dart'; @@ -37,7 +37,7 @@ class _InventoryBrowserState extends State with AutomaticKeepA Widget build(BuildContext context) { super.build(context); return Consumer(builder: (BuildContext context, InventoryClient iClient, Widget? child) { - return FutureBuilder( + return FutureBuilder( future: iClient.directoryFuture, builder: (context, snapshot) { final currentDir = snapshot.data; @@ -57,7 +57,9 @@ class _InventoryBrowserState extends State with AutomaticKeepA await iClient.reloadCurrentDirectory(); _refreshLimiter = Timer(_refreshLimit, () {}); } catch (e) { - ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("Refresh failed: $e"))); + if (context.mounted) { + ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("Refresh failed: $e"))); + } } }, child: Builder( diff --git a/lib/widgets/messages/message_session_invite.dart b/lib/widgets/messages/message_session_invite.dart index da53fc2..0c9402f 100644 --- a/lib/widgets/messages/message_session_invite.dart +++ b/lib/widgets/messages/message_session_invite.dart @@ -44,7 +44,7 @@ class MessageSessionInvite extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ GenericAvatar( - imageUri: Aux.resdbToHttp(sessionInfo.thumbnail), + imageUri: Aux.resdbToHttp(sessionInfo.thumbnailUrl), placeholderIcon: Icons.no_photography, foregroundColor: foregroundColor, ), diff --git a/lib/widgets/messages/messages_session_header.dart b/lib/widgets/messages/messages_session_header.dart index ebe7d4f..738a937 100644 --- a/lib/widgets/messages/messages_session_header.dart +++ b/lib/widgets/messages/messages_session_header.dart @@ -14,7 +14,7 @@ class SessionPopup extends StatelessWidget { @override Widget build(BuildContext context) { final ScrollController userListScrollController = ScrollController(); - final thumbnailUri = Aux.resdbToHttp(session.thumbnail); + final thumbnailUri = Aux.resdbToHttp(session.thumbnailUrl); return Dialog( insetPadding: const EdgeInsets.all(32), child: Container( @@ -145,7 +145,7 @@ class SessionTile extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - GenericAvatar(imageUri: Aux.resdbToHttp(session.thumbnail), placeholderIcon: Icons.no_photography), + GenericAvatar(imageUri: Aux.resdbToHttp(session.thumbnailUrl), placeholderIcon: Icons.no_photography), Padding( padding: const EdgeInsets.symmetric(horizontal: 12.0), child: Column( diff --git a/lib/widgets/sessions/session_list.dart b/lib/widgets/sessions/session_list.dart index 8fb7375..544afca 100644 --- a/lib/widgets/sessions/session_list.dart +++ b/lib/widgets/sessions/session_list.dart @@ -92,7 +92,7 @@ class _SessionListState extends State with AutomaticKeepAliveClient child: Hero( tag: session.id, child: CachedNetworkImage( - imageUrl: Aux.resdbToHttp(session.thumbnail), + imageUrl: Aux.resdbToHttp(session.thumbnailUrl), fit: BoxFit.cover, errorWidget: (context, url, error) => const Center( child: Icon( diff --git a/lib/widgets/sessions/session_view.dart b/lib/widgets/sessions/session_view.dart index c59b088..a523610 100644 --- a/lib/widgets/sessions/session_view.dart +++ b/lib/widgets/sessions/session_view.dart @@ -61,7 +61,7 @@ class _SessionViewState extends State { SizedBox( height: 192, child: CachedNetworkImage( - imageUrl: Aux.resdbToHttp(session.thumbnail), + imageUrl: Aux.resdbToHttp(session.thumbnailUrl), imageBuilder: (context, image) { return Material( child: InkWell(