👽 Update API to microservices

♻️ Refactor router pushes
This commit is contained in:
2025-07-17 14:35:09 +08:00
parent a7454edec0
commit e6c58b7b63
109 changed files with 9156 additions and 344 deletions

View File

@@ -43,7 +43,9 @@ Future<Color?> realmAppbarForegroundColor(Ref ref, String realmSlug) async {
Future<SnRealmMember?> realmIdentity(Ref ref, String realmSlug) async {
try {
final apiClient = ref.watch(apiClientProvider);
final response = await apiClient.get('/realms/$realmSlug/members/me');
final response = await apiClient.get(
'/sphere/realms/$realmSlug/members/me',
);
return SnRealmMember.fromJson(response.data);
} catch (err) {
if (err is DioException && err.response?.statusCode == 404) {
@@ -56,7 +58,7 @@ Future<SnRealmMember?> realmIdentity(Ref ref, String realmSlug) async {
@riverpod
Future<List<SnChatRoom>> realmChatRooms(Ref ref, String realmSlug) async {
final apiClient = ref.watch(apiClientProvider);
final response = await apiClient.get('/realms/$realmSlug/chat');
final response = await apiClient.get('/sphere/realms/$realmSlug/chat');
return (response.data as List).map((e) => SnChatRoom.fromJson(e)).toList();
}
@@ -211,7 +213,7 @@ class RealmDetailScreen extends HookConsumerWidget {
return ChatRoomListTile(
room: rooms[index],
onTap: () {
context.push('/chat/${rooms[index].id}');
context.pushNamed('chatRoom', pathParameters: {'id': rooms[index].id});
},
);
}, childCount: rooms.length),
@@ -249,7 +251,7 @@ class _RealmActionMenu extends HookConsumerWidget {
if (isModerator)
PopupMenuItem(
onTap: () {
context.pushReplacement('/realms/$realmSlug/edit');
context.pushReplacement('/sphere/realms/$realmSlug/edit');
},
child: Row(
children: [
@@ -284,7 +286,7 @@ class _RealmActionMenu extends HookConsumerWidget {
).then((confirm) {
if (confirm) {
final client = ref.watch(apiClientProvider);
client.delete('/realms/$realmSlug');
client.delete('/sphere/realms/$realmSlug');
ref.invalidate(realmsJoinedProvider);
if (context.mounted) {
context.pop(true);
@@ -356,7 +358,7 @@ class _RealmActionMenu extends HookConsumerWidget {
).then((confirm) {
if (confirm) {
final client = ref.watch(apiClientProvider);
client.delete('/realms/$realmSlug/members/me');
client.delete('/sphere/realms/$realmSlug/members/me');
ref.invalidate(realmsJoinedProvider);
if (context.mounted) {
context.pop(true);

View File

@@ -155,7 +155,7 @@ class _RealmAppbarForegroundColorProviderElement
(origin as RealmAppbarForegroundColorProvider).realmSlug;
}
String _$realmIdentityHash() => r'308d43eef8a6145c762d27bdf7e12e27149524db';
String _$realmIdentityHash() => r'c5e2977d243260947b919bc27146c134e34f0db1';
/// See also [realmIdentity].
@ProviderFor(realmIdentity)
@@ -276,7 +276,7 @@ class _RealmIdentityProviderElement
String get realmSlug => (origin as RealmIdentityProvider).realmSlug;
}
String _$realmChatRoomsHash() => r'8207c1e6f0922323967f208efeed027e943039cc';
String _$realmChatRoomsHash() => r'5f199906fb287b109e2a2d2a81dcb6675bdcb816';
/// See also [realmChatRooms].
@ProviderFor(realmChatRooms)

View File

@@ -28,7 +28,7 @@ part 'realms.g.dart';
@riverpod
Future<List<SnRealm>> realmsJoined(Ref ref) async {
final client = ref.watch(apiClientProvider);
final resp = await client.get('/realms');
final resp = await client.get('/sphere/realms');
return resp.data.map((e) => SnRealm.fromJson(e)).cast<SnRealm>().toList();
}
@@ -48,7 +48,7 @@ class RealmListScreen extends HookConsumerWidget {
actions: [
IconButton(
icon: const Icon(Symbols.travel_explore),
onPressed: () => context.push('/discovery/realms'),
onPressed: () => context.pushNamed('discoveryRealms'),
),
IconButton(
icon: Badge(
@@ -81,7 +81,7 @@ class RealmListScreen extends HookConsumerWidget {
heroTag: const Key("realms-page-fab"),
child: const Icon(Symbols.add),
onPressed: () {
context.push('/realms/new').then((value) {
context.pushNamed('realmNew').then((value) {
if (value != null) {
ref.invalidate(realmsJoinedProvider);
}
@@ -108,7 +108,7 @@ class RealmListScreen extends HookConsumerWidget {
title: Text(value[item].name),
subtitle: Text(value[item].description),
onTap: () {
context.push('/realms/${value[item].slug}');
context.pushNamed('realmDetail', pathParameters: {'slug': value[item].slug});
},
contentPadding: const EdgeInsets.only(
left: 16,
@@ -139,7 +139,7 @@ class RealmListScreen extends HookConsumerWidget {
Future<SnRealm?> realm(Ref ref, String? identifier) async {
if (identifier == null) return null;
final client = ref.watch(apiClientProvider);
final resp = await client.get('/realms/$identifier');
final resp = await client.get('/sphere/realms/$identifier');
return SnRealm.fromJson(resp.data);
}
@@ -406,7 +406,7 @@ class EditRealmScreen extends HookConsumerWidget {
@riverpod
Future<List<SnRealmMember>> realmInvites(Ref ref) async {
final client = ref.watch(apiClientProvider);
final resp = await client.get('/realms/invites');
final resp = await client.get('/sphere/realms/invites');
return resp.data
.map((e) => SnRealmMember.fromJson(e))
.cast<SnRealmMember>()
@@ -423,7 +423,9 @@ class _RealmInviteSheet extends HookConsumerWidget {
Future<void> acceptInvite(SnRealmMember invite) async {
try {
final client = ref.read(apiClientProvider);
await client.post('/realms/invites/${invite.realm!.slug}/accept');
await client.post(
'/sphere/realms/invites/${invite.realm!.slug}/accept',
);
ref.invalidate(realmInvitesProvider);
ref.invalidate(realmsJoinedProvider);
} catch (err) {
@@ -434,7 +436,9 @@ class _RealmInviteSheet extends HookConsumerWidget {
Future<void> declineInvite(SnRealmMember invite) async {
try {
final client = ref.read(apiClientProvider);
await client.post('/realms/invites/${invite.realm!.slug}/decline');
await client.post(
'/sphere/realms/invites/${invite.realm!.slug}/decline',
);
ref.invalidate(realmInvitesProvider);
} catch (err) {
showErrorAlert(err);

View File

@@ -6,7 +6,7 @@ part of 'realms.dart';
// RiverpodGenerator
// **************************************************************************
String _$realmsJoinedHash() => r'7c3367db97079365ec9973733cad9db6d8d50800';
String _$realmsJoinedHash() => r'e8083f02ffae450bba2470c31757675b4df32cd0';
/// See also [realmsJoined].
@ProviderFor(realmsJoined)
@@ -22,7 +22,7 @@ final realmsJoinedProvider = AutoDisposeFutureProvider<List<SnRealm>>.internal(
@Deprecated('Will be removed in 3.0. Use Ref instead')
// ignore: unused_element
typedef RealmsJoinedRef = AutoDisposeFutureProviderRef<List<SnRealm>>;
String _$realmHash() => r'369d2f3dd80de9ab91457a772727ee89a0759c74';
String _$realmHash() => r'4650b17608a9ee14170ef20295eb14d295e909c9';
/// Copied from Dart SDK
class _SystemHash {
@@ -156,7 +156,7 @@ class _RealmProviderElement extends AutoDisposeFutureProviderElement<SnRealm?>
String? get identifier => (origin as RealmProvider).identifier;
}
String _$realmInvitesHash() => r'e265999a03932f8077fb95a619fd8849a215375a';
String _$realmInvitesHash() => r'ed73443c6423b92ed72982be2a93b7dcc7ce3945';
/// See also [realmInvites].
@ProviderFor(realmInvites)