🐛 Bug fixes android sharing, ios notifications and more

This commit is contained in:
2025-06-28 01:10:44 +08:00
parent 243ecb3f71
commit a23dcfe702
12 changed files with 123 additions and 91 deletions

View File

@ -53,7 +53,10 @@ final routerProvider = Provider<GoRouter>((ref) {
// Standalone routes without bottom navigation
GoRoute(
path: '/posts/compose',
builder: (context, state) => const PostComposeScreen(),
builder:
(context, state) => PostComposeScreen(
initialState: state.extra as PostComposeInitialState?,
),
),
GoRoute(
path: '/posts/:id/edit',

View File

@ -54,25 +54,26 @@ Future<SnSubscriptionStatus> publisherSubscriptionStatus(
@riverpod
Future<Color?> publisherAppbarForcegroundColor(Ref ref, String pubName) async {
final publisher = await ref.watch(publisherProvider(pubName).future);
if (publisher.background == null) return null;
final palette = await PaletteGenerator.fromImageProvider(
CloudImageWidget.provider(
fileId: publisher.background!.id,
serverUrl: ref.watch(serverUrlProvider),
),
);
final dominantColor = palette.dominantColor?.color;
if (dominantColor == null) return null;
return dominantColor.computeLuminance() > 0.5 ? Colors.black : Colors.white;
try {
final publisher = await ref.watch(publisherProvider(pubName).future);
if (publisher.background == null) return null;
final palette = await PaletteGenerator.fromImageProvider(
CloudImageWidget.provider(
fileId: publisher.background!.id,
serverUrl: ref.watch(serverUrlProvider),
),
);
final dominantColor = palette.dominantColor?.color;
if (dominantColor == null) return null;
return dominantColor.computeLuminance() > 0.5 ? Colors.black : Colors.white;
} catch (_) {
return null;
}
}
class PublisherProfileScreen extends HookConsumerWidget {
final String name;
const PublisherProfileScreen({
super.key,
required this.name,
});
const PublisherProfileScreen({super.key, required this.name});
@override
Widget build(BuildContext context, WidgetRef ref) {

View File

@ -186,13 +186,7 @@ class CloudFileZoomIn extends HookConsumerWidget {
Future<void> saveToGallery() async {
try {
// Show loading indicator
final scaffold = ScaffoldMessenger.of(context);
scaffold.showSnackBar(
const SnackBar(
content: Text('Saving image to gallery...'),
duration: Duration(seconds: 1),
),
);
showSnackBar('Saving image to gallery...');
// Get the image URL
final client = ref.watch(apiClientProvider);
@ -209,12 +203,7 @@ class CloudFileZoomIn extends HookConsumerWidget {
await Gal.putImage(filePath, album: 'Solar Network');
// Show success message
scaffold.showSnackBar(
const SnackBar(
content: Text('Image saved to gallery'),
duration: Duration(seconds: 2),
),
);
showSnackBar('Image saved to gallery');
} catch (e) {
showErrorAlert(e);
}

View File

@ -29,7 +29,7 @@ class PublisherCard extends ConsumerWidget {
clipBehavior: Clip.antiAlias,
child: InkWell(
onTap: () {
context.push('/publishers/${publisher.id}');
context.push('/publishers/${publisher.name}');
},
child: AspectRatio(
aspectRatio: 16 / 7,

View File

@ -13,6 +13,7 @@ import 'package:island/pods/network.dart';
import 'package:island/pods/config.dart';
import 'package:island/pods/userinfo.dart';
import 'package:island/services/file.dart';
import 'package:mime/mime.dart';
import 'dart:io';
import 'package:path/path.dart' as path;
@ -149,9 +150,9 @@ class _ShareSheetState extends ConsumerState<ShareSheet> {
case ShareContentType.file:
if (widget.content.files != null) {
// Convert XFiles to UniversalFiles
for (final xFile in widget.content.files!) {
final file = File(xFile.path);
final mimeType = xFile.mimeType;
for (final file in widget.content.files!) {
var mimeType = file.mimeType;
mimeType ??= lookupMimeType(file.path);
UniversalFileType fileType;
if (mimeType?.startsWith('image/') == true) {