mirror of
https://github.com/StarCitizenToolBox/app.git
synced 2026-01-13 19:50:28 +00:00
fix: default avatar url
This commit is contained in:
parent
825b399ab1
commit
3c07d12ee9
@ -1,5 +1,6 @@
|
||||
import 'package:fixnum/fixnum.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:starcitizen_doctor/common/conf/url_conf.dart';
|
||||
|
||||
class PartyRoomUtils {
|
||||
static final DateFormat dateTimeFormatter = DateFormat('yyyy-MM-dd HH:mm:ss');
|
||||
@ -19,4 +20,20 @@ class PartyRoomUtils {
|
||||
}
|
||||
return dateTimeFormatter.format(dateTime);
|
||||
}
|
||||
|
||||
/// 统一处理 avatarUrl
|
||||
/// 对于 http/https 开头的直接返回,否则使用旧的拼接规则
|
||||
static String? getAvatarUrl(String? avatarUrl) {
|
||||
if (avatarUrl == null || avatarUrl.isEmpty) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// 如果已经是完整的 URL,直接返回
|
||||
if (avatarUrl.startsWith('http://') || avatarUrl.startsWith('https://')) {
|
||||
return avatarUrl;
|
||||
}
|
||||
|
||||
// 否则使用 RSI 头像基础 URL 拼接
|
||||
return '${URLConf.rsiAvatarBaseUrl}$avatarUrl';
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import 'package:fluent_ui/fluent_ui.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:starcitizen_doctor/common/conf/url_conf.dart';
|
||||
import 'package:starcitizen_doctor/generated/proto/partroom/partroom.pb.dart';
|
||||
import 'package:starcitizen_doctor/provider/party_room.dart';
|
||||
import 'package:starcitizen_doctor/ui/party_room/utils/party_room_utils.dart';
|
||||
import 'package:starcitizen_doctor/widgets/src/cache_image.dart';
|
||||
|
||||
/// 成员列表侧边栏
|
||||
@ -43,7 +43,7 @@ class PartyRoomMemberItem extends ConsumerWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final avatarUrl = member.avatarUrl.isNotEmpty ? '${URLConf.rsiAvatarBaseUrl}${member.avatarUrl}' : null;
|
||||
final avatarUrl = PartyRoomUtils.getAvatarUrl(member.avatarUrl);
|
||||
final partyRoomState = ref.watch(partyRoomProvider);
|
||||
final currentUserId = partyRoomState.auth.userInfo?.gameUserId ?? '';
|
||||
final isSelf = member.gameUserId == currentUserId;
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import 'package:fluent_ui/fluent_ui.dart';
|
||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:starcitizen_doctor/common/conf/url_conf.dart';
|
||||
import 'package:starcitizen_doctor/generated/proto/partroom/partroom.pb.dart' as partroom;
|
||||
import 'package:starcitizen_doctor/provider/party_room.dart';
|
||||
import 'package:starcitizen_doctor/ui/party_room/utils/party_room_utils.dart';
|
||||
import 'package:starcitizen_doctor/widgets/src/cache_image.dart';
|
||||
import 'package:url_launcher/url_launcher_string.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
@ -388,7 +388,7 @@ class _MessageItem extends ConsumerWidget {
|
||||
event.type == partroom.RoomEventType.MEMBER_KICKED ||
|
||||
event.type == partroom.RoomEventType.OWNER_CHANGED) {
|
||||
if (event.hasMember() && event.member.avatarUrl.isNotEmpty) {
|
||||
return '${URLConf.rsiAvatarBaseUrl}${event.member.avatarUrl}';
|
||||
return PartyRoomUtils.getAvatarUrl(event.member.avatarUrl);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
||||
@ -8,10 +8,10 @@ import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
|
||||
import 'package:flutter_tilt/flutter_tilt.dart';
|
||||
import 'package:hexcolor/hexcolor.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:starcitizen_doctor/common/conf/url_conf.dart';
|
||||
import 'package:starcitizen_doctor/generated/proto/partroom/partroom.pb.dart';
|
||||
import 'package:starcitizen_doctor/provider/party_room.dart';
|
||||
import 'package:starcitizen_doctor/ui/party_room/party_room_ui_model.dart';
|
||||
import 'package:starcitizen_doctor/ui/party_room/utils/party_room_utils.dart';
|
||||
import 'package:starcitizen_doctor/ui/party_room/widgets/create_room_dialog.dart';
|
||||
import 'package:starcitizen_doctor/widgets/widgets.dart';
|
||||
|
||||
@ -132,7 +132,7 @@ class PartyRoomListPage extends HookConsumerWidget {
|
||||
(m) => m.gameUserId == currentRoom.ownerGameId,
|
||||
orElse: () => RoomMember(),
|
||||
);
|
||||
final avatarUrl = owner.avatarUrl.isNotEmpty ? '${URLConf.rsiAvatarBaseUrl}${owner.avatarUrl}' : '';
|
||||
final avatarUrl = PartyRoomUtils.getAvatarUrl(owner.avatarUrl) ?? '';
|
||||
|
||||
return Bounce(
|
||||
duration: Duration(milliseconds: 230),
|
||||
@ -276,7 +276,7 @@ class PartyRoomListPage extends HookConsumerWidget {
|
||||
}
|
||||
|
||||
Widget _buildRoomCard(BuildContext context, WidgetRef ref, PartyRoom partyRoom, RoomListItem room, int index) {
|
||||
final avatarUrl = room.ownerAvatar.isNotEmpty ? '${URLConf.rsiAvatarBaseUrl}${room.ownerAvatar}' : '';
|
||||
final avatarUrl = PartyRoomUtils.getAvatarUrl(room.ownerAvatar) ?? '';
|
||||
final partyRoomState = ref.watch(partyRoomProvider);
|
||||
final isCurrentRoom = partyRoomState.room.isInRoom && partyRoomState.room.roomUuid == room.roomUuid;
|
||||
return GridItemAnimator(
|
||||
|
||||
Loading…
Reference in New Issue
Block a user