✨ Status activity
This commit is contained in:
		| @@ -138,5 +138,8 @@ | ||||
|   "statusClearTime": "Cleared At", | ||||
|   "statusNoAutoClear": "Do not auto clear", | ||||
|   "online": "Online", | ||||
|   "offline": "Offline" | ||||
|   "offline": "Offline", | ||||
|   "status": "Status", | ||||
|   "statusActivityTitle": "{} is {} {}", | ||||
|   "statusActivityEndedTitle": "{} is {} {} until {}" | ||||
| } | ||||
|   | ||||
| @@ -19,6 +19,7 @@ import 'package:island/pods/websocket.dart'; | ||||
| import 'package:island/route.dart'; | ||||
| import 'package:island/services/notify.dart'; | ||||
| import 'package:island/widgets/app_scaffold.dart'; | ||||
| import 'package:relative_time/relative_time.dart'; | ||||
| import 'package:shared_preferences/shared_preferences.dart'; | ||||
| import 'package:image_picker_platform_interface/image_picker_platform_interface.dart'; | ||||
|  | ||||
| @@ -102,6 +103,7 @@ class IslandApp extends HookConsumerWidget { | ||||
|       localizationsDelegates: [ | ||||
|         ...context.localizationDelegates, | ||||
|         CroppyLocalizations.delegate, | ||||
|         RelativeTimeLocalizations.delegate, | ||||
|       ], // this contains the cupertino one | ||||
|       locale: context.locale, | ||||
|       builder: (context, child) { | ||||
|   | ||||
| @@ -5,6 +5,7 @@ import 'package:gap/gap.dart'; | ||||
| import 'package:island/models/activity.dart'; | ||||
| import 'package:island/pods/userinfo.dart'; | ||||
| import 'package:island/route.gr.dart'; | ||||
| import 'package:island/widgets/account/status.dart'; | ||||
| import 'package:island/widgets/app_scaffold.dart'; | ||||
| import 'package:island/models/post.dart'; | ||||
| import 'package:island/widgets/check_in.dart'; | ||||
| @@ -66,6 +67,8 @@ class ExploreScreen extends ConsumerWidget { | ||||
|                     ); | ||||
|                   case 'accounts.check-in': | ||||
|                     return CheckInActivityWidget(item: item); | ||||
|                   case 'accounts.status': | ||||
|                     return StatusActivityWidget(item: item); | ||||
|                   default: | ||||
|                     return Placeholder(); | ||||
|                 } | ||||
|   | ||||
| @@ -1,11 +1,15 @@ | ||||
| import 'package:dio/dio.dart'; | ||||
| import 'package:easy_localization/easy_localization.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:gap/gap.dart'; | ||||
| import 'package:hooks_riverpod/hooks_riverpod.dart'; | ||||
| import 'package:island/models/activity.dart'; | ||||
| import 'package:island/models/user.dart'; | ||||
| import 'package:island/pods/network.dart'; | ||||
| import 'package:island/widgets/account/status_creation.dart'; | ||||
| import 'package:island/widgets/content/cloud_files.dart'; | ||||
| import 'package:material_symbols_icons/symbols.dart'; | ||||
| import 'package:relative_time/relative_time.dart'; | ||||
| import 'package:riverpod_annotation/riverpod_annotation.dart'; | ||||
| import 'package:styled_widget/styled_widget.dart'; | ||||
|  | ||||
| @@ -128,3 +132,54 @@ class AccountStatusWidget extends HookConsumerWidget { | ||||
|     ).opacity((userStatus.value?.isCustomized ?? false) ? 1 : 0.85); | ||||
|   } | ||||
| } | ||||
|  | ||||
| class StatusActivityWidget extends StatelessWidget { | ||||
|   final SnActivity item; | ||||
|   const StatusActivityWidget({super.key, required this.item}); | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     final result = SnAccountStatus.fromJson(item.data); | ||||
|     return Row( | ||||
|       spacing: 12, | ||||
|       crossAxisAlignment: CrossAxisAlignment.start, | ||||
|       children: [ | ||||
|         ProfilePictureWidget( | ||||
|           fileId: item.account.profile.pictureId, | ||||
|           radius: 12, | ||||
|         ), | ||||
|         Expanded( | ||||
|           child: Column( | ||||
|             crossAxisAlignment: CrossAxisAlignment.stretch, | ||||
|             children: [ | ||||
|               Row( | ||||
|                 crossAxisAlignment: CrossAxisAlignment.start, | ||||
|                 children: [ | ||||
|                   const Icon(Symbols.circle, size: 12).padding(top: 1, left: 2), | ||||
|                   const Gap(4), | ||||
|                   Text('status').fontSize(11).tr(), | ||||
|                 ], | ||||
|               ).opacity(0.85), | ||||
|               Text( | ||||
|                     result.clearedAt == null | ||||
|                         ? 'statusActivityTitle' | ||||
|                         : 'statusActivityEndedTitle', | ||||
|                   ) | ||||
|                   .tr( | ||||
|                     args: [ | ||||
|                       item.account.nick, | ||||
|                       result.label, | ||||
|                       RelativeTime(context).format(result.createdAt), | ||||
|                       if (result.clearedAt != null) | ||||
|                         RelativeTime(context).format(result.clearedAt!), | ||||
|                     ], | ||||
|                   ) | ||||
|                   .fontSize(13) | ||||
|                   .padding(left: 2), | ||||
|             ], | ||||
|           ), | ||||
|         ), | ||||
|       ], | ||||
|     ).padding(horizontal: 16, vertical: 12); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -1397,6 +1397,14 @@ packages: | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "4.1.0" | ||||
|   relative_time: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: relative_time | ||||
|       sha256: "4e6c3b27d98ff6af5061b6dbaca178b5aa2607b7a7c2a77e6cae1d32b2759893" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "5.0.0" | ||||
|   responsive_framework: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|   | ||||
| @@ -93,6 +93,7 @@ dependencies: | ||||
|   croppy: ^1.3.6 | ||||
|   tencent_rtc_sdk: ^12.3.6 | ||||
|   table_calendar: ^3.1.3 | ||||
|   relative_time: ^5.0.0 | ||||
|  | ||||
| dev_dependencies: | ||||
|   flutter_test: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user