🐛 Dozens of bug fixes

This commit is contained in:
2025-07-23 02:33:28 +08:00
parent 19f0e11384
commit 170ea4f2c0
6 changed files with 65 additions and 60 deletions

View File

@@ -45,10 +45,10 @@ PODS:
- Firebase/Messaging (11.15.0): - Firebase/Messaging (11.15.0):
- Firebase/CoreOnly - Firebase/CoreOnly
- FirebaseMessaging (~> 11.15.0) - FirebaseMessaging (~> 11.15.0)
- firebase_core (3.15.1): - firebase_core (3.15.2):
- Firebase/CoreOnly (= 11.15.0) - Firebase/CoreOnly (= 11.15.0)
- Flutter - Flutter
- firebase_messaging (15.2.9): - firebase_messaging (15.2.10):
- Firebase/Messaging (= 11.15.0) - Firebase/Messaging (= 11.15.0)
- firebase_core - firebase_core
- Flutter - Flutter
@@ -130,7 +130,7 @@ PODS:
- Flutter - Flutter
- irondash_engine_context (0.0.1): - irondash_engine_context (0.0.1):
- Flutter - Flutter
- Kingfisher (8.4.0) - Kingfisher (8.5.0)
- livekit_client (2.4.9): - livekit_client (2.4.9):
- Flutter - Flutter
- flutter_webrtc - flutter_webrtc
@@ -178,23 +178,23 @@ PODS:
- sqflite_darwin (0.0.4): - sqflite_darwin (0.0.4):
- Flutter - Flutter
- FlutterMacOS - FlutterMacOS
- sqlite3 (3.50.2): - sqlite3 (3.50.3):
- sqlite3/common (= 3.50.2) - sqlite3/common (= 3.50.3)
- sqlite3/common (3.50.2) - sqlite3/common (3.50.3)
- sqlite3/dbstatvtab (3.50.2): - sqlite3/dbstatvtab (3.50.3):
- sqlite3/common - sqlite3/common
- sqlite3/fts5 (3.50.2): - sqlite3/fts5 (3.50.3):
- sqlite3/common - sqlite3/common
- sqlite3/math (3.50.2): - sqlite3/math (3.50.3):
- sqlite3/common - sqlite3/common
- sqlite3/perf-threadsafe (3.50.2): - sqlite3/perf-threadsafe (3.50.3):
- sqlite3/common - sqlite3/common
- sqlite3/rtree (3.50.2): - sqlite3/rtree (3.50.3):
- sqlite3/common - sqlite3/common
- sqlite3_flutter_libs (0.0.1): - sqlite3_flutter_libs (0.0.1):
- Flutter - Flutter
- FlutterMacOS - FlutterMacOS
- sqlite3 (~> 3.50.1) - sqlite3 (~> 3.50.3)
- sqlite3/dbstatvtab - sqlite3/dbstatvtab
- sqlite3/fts5 - sqlite3/fts5
- sqlite3/math - sqlite3/math
@@ -362,8 +362,8 @@ SPEC CHECKSUMS:
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60 DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
file_picker: a0560bc09d61de87f12d246fc47d2119e6ef37be file_picker: a0560bc09d61de87f12d246fc47d2119e6ef37be
Firebase: d99ac19b909cd2c548339c2241ecd0d1599ab02e Firebase: d99ac19b909cd2c548339c2241ecd0d1599ab02e
firebase_core: ece862f94b2bc72ee0edbeec7ab5c7cb09fe1ab5 firebase_core: 995454a784ff288be5689b796deb9e9fa3601818
firebase_messaging: e1a5fae495603115be1d0183bc849da748734e2b firebase_messaging: f4a41dd102ac18b840eba3f39d67e77922d3f707
FirebaseCore: efb3893e5b94f32b86e331e3bd6dadf18b66568e FirebaseCore: efb3893e5b94f32b86e331e3bd6dadf18b66568e
FirebaseCoreInternal: 9afa45b1159304c963da48addb78275ef701c6b4 FirebaseCoreInternal: 9afa45b1159304c963da48addb78275ef701c6b4
FirebaseInstallations: 317270fec08a5d418fdbc8429282238cab3ac843 FirebaseInstallations: 317270fec08a5d418fdbc8429282238cab3ac843
@@ -382,7 +382,7 @@ SPEC CHECKSUMS:
GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1 GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1
image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a
irondash_engine_context: 8e58ca8e0212ee9d1c7dc6a42121849986c88486 irondash_engine_context: 8e58ca8e0212ee9d1c7dc6a42121849986c88486
Kingfisher: b14cc47bbfa7a3c150dd12962ee9c86338545629 Kingfisher: ff0d31a1f07bdff6a1ebb3ba08b8e6e567b6500c
livekit_client: 3f79d79233a5bd13d5b541732624ef959d7c538e livekit_client: 3f79d79233a5bd13d5b541732624ef959d7c538e
local_auth_darwin: d2e8c53ef0c4f43c646462e3415432c4dab3ae19 local_auth_darwin: d2e8c53ef0c4f43c646462e3415432c4dab3ae19
media_kit_libs_ios_video: 5a18affdb97d1f5d466dc79988b13eff6c5e2854 media_kit_libs_ios_video: 5a18affdb97d1f5d466dc79988b13eff6c5e2854
@@ -403,8 +403,8 @@ SPEC CHECKSUMS:
shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
sign_in_with_apple: c5dcc141574c8c54d5ac99dd2163c0c72ad22418 sign_in_with_apple: c5dcc141574c8c54d5ac99dd2163c0c72ad22418
sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0 sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
sqlite3: 3e82a2daae39ba3b41ae6ee84a130494585460fc sqlite3: 83105acd294c9137c026e2da1931c30b4588ab81
sqlite3_flutter_libs: e7fc8c9ea2200ff3271f08f127842131746b70e2 sqlite3_flutter_libs: ce0522d143cee6ef5e16587acfce8f476316e005
super_native_extensions: b763c02dc3a8fd078389f410bf15149179020cb4 super_native_extensions: b763c02dc3a8fd078389f410bf15149179020cb4
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4 SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
url_launcher_ios: 694010445543906933d732453a59da0a173ae33d url_launcher_ios: 694010445543906933d732453a59da0a173ae33d

View File

@@ -4,28 +4,27 @@ import 'package:island/models/webfeed.dart';
import 'package:island/pods/network.dart'; import 'package:island/pods/network.dart';
/// Provider that fetches a single article by its ID /// Provider that fetches a single article by its ID
final articleDetailProvider = FutureProvider.autoDispose.family<SnWebArticle, String>( final articleDetailProvider = FutureProvider.autoDispose
(ref, articleId) async { .family<SnWebArticle, String>((ref, articleId) async {
final dio = ref.watch(apiClientProvider); final dio = ref.watch(apiClientProvider);
try { try {
final response = await dio.get<Map<String, dynamic>>( final response = await dio.get<Map<String, dynamic>>(
'/feeds/articles/$articleId', '/sphere/feeds/articles/$articleId',
); );
if (response.statusCode == 200 && response.data != null) { if (response.statusCode == 200 && response.data != null) {
return SnWebArticle.fromJson(response.data!); return SnWebArticle.fromJson(response.data!);
} else { } else {
throw Exception('Failed to load article'); throw Exception('Failed to load article');
}
} on DioException catch (e) {
if (e.response?.statusCode == 404) {
throw Exception('Article not found');
} else {
throw Exception('Failed to load article: ${e.message}');
}
} catch (e) {
throw Exception('Failed to load article: $e');
} }
} on DioException catch (e) { });
if (e.response?.statusCode == 404) {
throw Exception('Article not found');
} else {
throw Exception('Failed to load article: ${e.message}');
}
} catch (e) {
throw Exception('Failed to load article: $e');
}
},
);

View File

@@ -30,7 +30,11 @@ class AttachmentPreview extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var ratio = var ratio =
(item.isOnCloud ? (item.data.fileMeta?['ratio'] ?? 1) : 1).toDouble(); item.isOnCloud
? (item.data.fileMeta?['ratio'] is num
? item.data.fileMeta!['ratio'].toDouble()
: 1.0)
: 1.0;
if (ratio == 0) ratio = 1.0; if (ratio == 0) ratio = 1.0;
return AspectRatio( return AspectRatio(

View File

@@ -30,8 +30,6 @@ class CloudFileWidget extends ConsumerWidget {
var ratio = var ratio =
item.fileMeta?['ratio'] is num item.fileMeta?['ratio'] is num
? item.fileMeta!['ratio'].toDouble() ? item.fileMeta!['ratio'].toDouble()
: item.fileMeta?['ratio'] is String
? double.parse(item.fileMeta!['ratio'])
: 1.0; : 1.0;
if (ratio == 0) ratio = 1.0; if (ratio == 0) ratio = 1.0;
final content = switch (item.mimeType?.split('/').firstOrNull) { final content = switch (item.mimeType?.split('/').firstOrNull) {
@@ -39,7 +37,10 @@ class CloudFileWidget extends ConsumerWidget {
aspectRatio: ratio, aspectRatio: ratio,
child: UniversalImage( child: UniversalImage(
uri: uri, uri: uri,
blurHash: noBlurhash ? null : item.fileMeta?['blur'], blurHash:
noBlurhash
? null
: (item.fileMeta is String ? item.fileMeta!['blur'] : null),
), ),
), ),
"video" => AspectRatio( "video" => AspectRatio(

View File

@@ -609,6 +609,7 @@ Widget _buildReferencePost(BuildContext context, SnPost item) {
final isReply = item.repliedPost != null; final isReply = item.repliedPost != null;
return Container( return Container(
margin: const EdgeInsets.only(bottom: 8),
padding: const EdgeInsets.all(12), padding: const EdgeInsets.all(12),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Theme.of(context).colorScheme.surfaceVariant.withOpacity(0.5), color: Theme.of(context).colorScheme.surfaceVariant.withOpacity(0.5),

View File

@@ -16,10 +16,10 @@ PODS:
- Firebase/Messaging (11.15.0): - Firebase/Messaging (11.15.0):
- Firebase/CoreOnly - Firebase/CoreOnly
- FirebaseMessaging (~> 11.15.0) - FirebaseMessaging (~> 11.15.0)
- firebase_core (3.15.1): - firebase_core (3.15.2):
- Firebase/CoreOnly (~> 11.15.0) - Firebase/CoreOnly (~> 11.15.0)
- FlutterMacOS - FlutterMacOS
- firebase_messaging (15.2.9): - firebase_messaging (15.2.10):
- Firebase/CoreOnly (~> 11.15.0) - Firebase/CoreOnly (~> 11.15.0)
- Firebase/Messaging (~> 11.15.0) - Firebase/Messaging (~> 11.15.0)
- firebase_core - firebase_core
@@ -130,23 +130,23 @@ PODS:
- sqflite_darwin (0.0.4): - sqflite_darwin (0.0.4):
- Flutter - Flutter
- FlutterMacOS - FlutterMacOS
- sqlite3 (3.50.1): - sqlite3 (3.50.3):
- sqlite3/common (= 3.50.1) - sqlite3/common (= 3.50.3)
- sqlite3/common (3.50.1) - sqlite3/common (3.50.3)
- sqlite3/dbstatvtab (3.50.1): - sqlite3/dbstatvtab (3.50.3):
- sqlite3/common - sqlite3/common
- sqlite3/fts5 (3.50.1): - sqlite3/fts5 (3.50.3):
- sqlite3/common - sqlite3/common
- sqlite3/math (3.50.1): - sqlite3/math (3.50.3):
- sqlite3/common - sqlite3/common
- sqlite3/perf-threadsafe (3.50.1): - sqlite3/perf-threadsafe (3.50.3):
- sqlite3/common - sqlite3/common
- sqlite3/rtree (3.50.1): - sqlite3/rtree (3.50.3):
- sqlite3/common - sqlite3/common
- sqlite3_flutter_libs (0.0.1): - sqlite3_flutter_libs (0.0.1):
- Flutter - Flutter
- FlutterMacOS - FlutterMacOS
- sqlite3 (~> 3.50.1) - sqlite3 (~> 3.50.3)
- sqlite3/dbstatvtab - sqlite3/dbstatvtab
- sqlite3/fts5 - sqlite3/fts5
- sqlite3/math - sqlite3/math
@@ -292,8 +292,8 @@ SPEC CHECKSUMS:
file_picker: 7584aae6fa07a041af2b36a2655122d42f578c1a file_picker: 7584aae6fa07a041af2b36a2655122d42f578c1a
file_selector_macos: 6280b52b459ae6c590af5d78fc35c7267a3c4b31 file_selector_macos: 6280b52b459ae6c590af5d78fc35c7267a3c4b31
Firebase: d99ac19b909cd2c548339c2241ecd0d1599ab02e Firebase: d99ac19b909cd2c548339c2241ecd0d1599ab02e
firebase_core: 8dc569d17b3a9fc3ee5ebc21b322411b4a796833 firebase_core: 7667f880631ae8ad10e3d6567ab7582fe0682326
firebase_messaging: adaf7fc22897a7aa49410d15f8a595bef2dbca2d firebase_messaging: df39858bcbbcce792c9e4f1ca51b41123d6181fd
FirebaseCore: efb3893e5b94f32b86e331e3bd6dadf18b66568e FirebaseCore: efb3893e5b94f32b86e331e3bd6dadf18b66568e
FirebaseCoreInternal: 9afa45b1159304c963da48addb78275ef701c6b4 FirebaseCoreInternal: 9afa45b1159304c963da48addb78275ef701c6b4
FirebaseInstallations: 317270fec08a5d418fdbc8429282238cab3ac843 FirebaseInstallations: 317270fec08a5d418fdbc8429282238cab3ac843
@@ -325,8 +325,8 @@ SPEC CHECKSUMS:
shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
sign_in_with_apple: 6673c03c9e3643f6c8d33601943fbfa9ae99f94e sign_in_with_apple: 6673c03c9e3643f6c8d33601943fbfa9ae99f94e
sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0 sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
sqlite3: 1d85290c3321153511f6e900ede7a1608718bbd5 sqlite3: 83105acd294c9137c026e2da1931c30b4588ab81
sqlite3_flutter_libs: e7fc8c9ea2200ff3271f08f127842131746b70e2 sqlite3_flutter_libs: ce0522d143cee6ef5e16587acfce8f476316e005
super_native_extensions: c2795d6d9aedf4a79fae25cb6160b71b50549189 super_native_extensions: c2795d6d9aedf4a79fae25cb6160b71b50549189
url_launcher_macos: 0fba8ddabfc33ce0a9afe7c5fef5aab3d8d2d673 url_launcher_macos: 0fba8ddabfc33ce0a9afe7c5fef5aab3d8d2d673
volume_controller: 5c068e6d085c80dadd33fc2c918d2114b775b3dd volume_controller: 5c068e6d085c80dadd33fc2c918d2114b775b3dd