Skip to content

Commit

Permalink
Merge branch 'develop' into main-pc
Browse files Browse the repository at this point in the history
  • Loading branch information
mylxsw committed Apr 11, 2024
2 parents e0d02bb + a0828da commit 8c499b3
Show file tree
Hide file tree
Showing 21 changed files with 1,406 additions and 34 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build_windows_app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
- name: Set up Flutter
uses: subosito/flutter-action@v2.10.0
with:
flutter-version: "3.13.2" # Set flutter version here
flutter-version: "3.19.2" # Set flutter version here

- name: Build Windows app
#run: flutter build windows --release
Expand Down
100 changes: 100 additions & 0 deletions lib/bloc/admin_room_bloc.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
import 'package:askaide/repo/api/page.dart';
import 'package:askaide/repo/api_server.dart';
import 'package:askaide/repo/model/message.dart';
import 'package:askaide/repo/model/misc.dart';
import 'package:bloc/bloc.dart';
import 'package:meta/meta.dart';

part 'admin_room_event.dart';
part 'admin_room_state.dart';

class AdminRoomBloc extends Bloc<AdminRoomEvent, AdminRoomState> {
AdminRoomBloc() : super(AdminRoomInitial()) {
on<AdminRoomsLoadEvent>((event, emit) async {
final rooms = await APIServer().adminUserRooms(userId: event.userId);
emit(AdminRoomsLoaded(rooms: rooms));
});

on<AdminRoomLoadEvent>((event, emit) async {
final room = await APIServer().adminUserRoom(
userId: event.userId,
roomId: event.roomId,
);
emit(AdminRoomLoaded(room: room));
});

on<AdminRoomRecentlyMessagesLoadEvent>((event, emit) async {
if (event.roomType == 4) {
final messages = await APIServer().adminUserRoomGroupMessages(
userId: event.userId, roomId: event.roomId);
emit(AdminRoomRecentlyMessagesLoaded(
messages: messages
.map((e) => Message(
e.role == 'user' ? Role.sender : Role.receiver,
e.message,
type: MessageType.text,
ts: e.createdAt,
model: e.model,
quotaConsumed: e.quotaConsumed,
tokenConsumed: e.tokenConsumed,
refId: e.pid,
id: e.id,
serverId: e.id,
))
.toList()));
} else {
final messages = await APIServer().adminUserRoomMessages(
userId: event.userId,
roomId: event.roomId,
);
emit(AdminRoomRecentlyMessagesLoaded(
messages: messages
.map((e) => Message(
e.role == 1 ? Role.sender : Role.receiver,
e.message,
type: MessageType.text,
ts: e.createdAt,
model: e.model,
quotaConsumed: e.quotaConsumed,
tokenConsumed: e.tokenConsumed,
refId: e.pid,
id: e.id,
serverId: e.id,
userId: e.userId,
roomId: e.roomId,
))
.toList()));
}
});

on<AdminRecentlyMessagesLoadEvent>((event, emit) async {
final messages = await APIServer().adminRecentlyMessages(
page: event.page,
perPage: event.perPage,
keyword: event.keyword,
);
emit(AdminRecentlyMessagesLoaded(PagedData(
data: messages.data
.map((e) => Message(
e.role == 1 ? Role.sender : Role.receiver,
e.message,
type: MessageType.text,
ts: e.createdAt,
model: e.model,
quotaConsumed: e.quotaConsumed,
tokenConsumed: e.tokenConsumed,
refId: e.pid,
id: e.id,
serverId: e.id,
userId: e.userId,
roomId: e.roomId,
))
.toList(),
page: messages.page,
perPage: messages.perPage,
total: messages.total,
lastPage: messages.lastPage,
)));
});
}
}
41 changes: 41 additions & 0 deletions lib/bloc/admin_room_event.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
part of 'admin_room_bloc.dart';

@immutable
sealed class AdminRoomEvent {}

class AdminRoomsLoadEvent extends AdminRoomEvent {
final int userId;

AdminRoomsLoadEvent({required this.userId});
}

class AdminRoomLoadEvent extends AdminRoomEvent {
final int userId;
final int roomId;

AdminRoomLoadEvent({required this.roomId, required this.userId});
}

class AdminRoomRecentlyMessagesLoadEvent extends AdminRoomEvent {
final int userId;
final int roomId;
final int roomType;

AdminRoomRecentlyMessagesLoadEvent({
required this.roomId,
required this.userId,
required this.roomType,
});
}

class AdminRecentlyMessagesLoadEvent extends AdminRoomEvent {
final int page;
final int perPage;
final String? keyword;

AdminRecentlyMessagesLoadEvent({
required this.page,
required this.perPage,
this.keyword,
});
}
37 changes: 37 additions & 0 deletions lib/bloc/admin_room_state.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
part of 'admin_room_bloc.dart';

@immutable
sealed class AdminRoomState {}

final class AdminRoomInitial extends AdminRoomState {}

final class AdminRoomsLoaded extends AdminRoomState {
final List<RoomInServer> rooms;

AdminRoomsLoaded({required this.rooms});
}

final class AdminRoomLoaded extends AdminRoomState {
final RoomInServer room;

AdminRoomLoaded({required this.room});
}

final class AdminRoomRecentlyMessagesLoaded extends AdminRoomState {
final List<Message> messages;

AdminRoomRecentlyMessagesLoaded({required this.messages});
}

class AdminRoomOperationResult extends AdminRoomState {
final bool success;
final String message;

AdminRoomOperationResult(this.success, this.message);
}

class AdminRecentlyMessagesLoaded extends AdminRoomState {
final PagedData<Message> messages;

AdminRecentlyMessagesLoaded(this.messages);
}
5 changes: 5 additions & 0 deletions lib/helper/ability.dart
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,11 @@ class Ability {
return capabilities.stripeEnabled;
}

/// 是否支持微信支付
bool get enableWechatPay {
return capabilities.wechatPayEnabled;
}

/// 是否支持 ApplePay
bool get enableApplePay {
return capabilities.applePayEnabled;
Expand Down
68 changes: 68 additions & 0 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:askaide/bloc/admin_payment_bloc.dart';
import 'package:askaide/bloc/admin_room_bloc.dart';
import 'package:askaide/bloc/channel_bloc.dart';
import 'package:askaide/bloc/model_bloc.dart';
import 'package:askaide/bloc/user_bloc.dart';
Expand All @@ -7,10 +8,13 @@ import 'package:askaide/page/admin/channels.dart';
import 'package:askaide/page/admin/channels_add.dart';
import 'package:askaide/page/admin/channels_edit.dart';
import 'package:askaide/page/admin/dashboard.dart';
import 'package:askaide/page/admin/messages.dart';
import 'package:askaide/page/admin/models.dart';
import 'package:askaide/page/admin/models_add.dart';
import 'package:askaide/page/admin/models_edit.dart';
import 'package:askaide/page/admin/payments.dart';
import 'package:askaide/page/admin/recently_messages.dart';
import 'package:askaide/page/admin/rooms.dart';
import 'package:askaide/page/admin/user.dart';
import 'package:askaide/page/admin/users.dart';
import 'package:askaide/page/balance/web_payment_proxy.dart';
Expand Down Expand Up @@ -1248,6 +1252,70 @@ class MyApp extends StatefulWidget {
);
},
),

GoRoute(
name: 'admin-user-rooms',
path: '/admin/users/:id/rooms',
parentNavigatorKey: _shellNavigatorKey,
pageBuilder: (context, state) {
final userId = int.parse(state.pathParameters['id']!);

return transitionResolver(
MultiBlocProvider(
providers: [
BlocProvider(
create: (context) => AdminRoomBloc(),
),
],
child: AdminRoomsPage(setting: settingRepo, userId: userId),
),
);
},
),

GoRoute(
name: 'admin-user-rooms-messages',
path: '/admin/users/:id/rooms/:room_id/messages',
parentNavigatorKey: _shellNavigatorKey,
pageBuilder: (context, state) {
final userId = int.parse(state.pathParameters['id']!);
final roomId = int.parse(state.pathParameters['room_id']!);

return transitionResolver(
MultiBlocProvider(
providers: [
BlocProvider(
create: (context) => AdminRoomBloc(),
),
],
child: AdminRoomMessagesPage(
setting: settingRepo,
userId: userId,
roomId: roomId,
roomType: int.parse(state.queryParameters['room_type']!),
),
),
);
},
),

GoRoute(
name: 'admin-recently-messages',
path: '/admin/recently-messages',
parentNavigatorKey: _shellNavigatorKey,
pageBuilder: (context, state) {
return transitionResolver(
MultiBlocProvider(
providers: [
BlocProvider(
create: (context) => AdminRoomBloc(),
),
],
child: AdminRecentlyMessagesPage(setting: settingRepo),
),
);
},
),
],
)
],
Expand Down
15 changes: 13 additions & 2 deletions lib/page/admin/dashboard.dart
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,10 @@ class _AdminDashboardPageState extends State<AdminDashboardPage> {
),
sections: [
SettingsSection(
title: const Text('创作岛'),
title: const Text('使用记录'),
tiles: [
SettingsTile(
title: const Text('创作历史'),
title: const Text('创作岛历史记录'),
trailing: const Icon(
CupertinoIcons.chevron_forward,
size: 18,
Expand All @@ -62,6 +62,17 @@ class _AdminDashboardPageState extends State<AdminDashboardPage> {
context.push('/creative-island/models');
},
),
SettingsTile(
title: const Text('普通聊天历史记录'),
trailing: const Icon(
CupertinoIcons.chevron_forward,
size: 18,
color: Colors.grey,
),
onPressed: (context) {
context.push('/admin/recently-messages');
},
),
],
),
SettingsSection(
Expand Down
Loading

0 comments on commit 8c499b3

Please sign in to comment.