Compare commits

...

2 Commits

Author SHA1 Message Date
72e6a6a1f6 Enhanced profile edit 2025-03-02 20:37:36 +08:00
66aef44281 ⬆️ Upgrade freezed 2025-03-02 15:22:24 +08:00
60 changed files with 10494 additions and 10201 deletions

View File

@ -735,5 +735,13 @@
"cacheSize": "Cache Size", "cacheSize": "Cache Size",
"cacheDelete": "Clean Cache", "cacheDelete": "Clean Cache",
"cacheDeleteDescription": "Remove the cached images and other resources from your disk, the content will be downloaded from server again.", "cacheDeleteDescription": "Remove the cached images and other resources from your disk, the content will be downloaded from server again.",
"cacheDeleted": "All cache has been cleaned up." "cacheDeleted": "All cache has been cleaned up.",
"userNoDescription": "No description.",
"fieldTimeZone": "Time Zone",
"fieldGender": "Gender",
"fieldPronouns": "Pronouns",
"fieldLocation": "Location",
"fieldLinks": "Links",
"fieldLinkName": "Name",
"fieldLinkUrl": "URL"
} }

View File

@ -733,5 +733,13 @@
"cacheSize": "缓存资源大小", "cacheSize": "缓存资源大小",
"cacheDelete": "清除缓存", "cacheDelete": "清除缓存",
"cacheDeleteDescription": "从磁盘中移除缓存的图片和其他资源,内容将从服务器重新下载。", "cacheDeleteDescription": "从磁盘中移除缓存的图片和其他资源,内容将从服务器重新下载。",
"cacheDeleted": "所有缓存已被清除。" "cacheDeleted": "所有缓存已被清除。",
"userNoDescription": "这个人很懒,没有留下什么……",
"fieldTimeZone": "时区",
"fieldGender": "性别",
"fieldPronouns": "人称代词",
"fieldLocation": "位置",
"fieldLinks": "链接",
"fieldLinkName": "名称",
"fieldLinkUrl": "链接"
} }

View File

@ -733,5 +733,13 @@
"cacheSize": "緩存資源大小", "cacheSize": "緩存資源大小",
"cacheDelete": "清除緩存", "cacheDelete": "清除緩存",
"cacheDeleteDescription": "從磁盤中移除緩存的圖片和其他資源,內容將從服務器重新下載。", "cacheDeleteDescription": "從磁盤中移除緩存的圖片和其他資源,內容將從服務器重新下載。",
"cacheDeleted": "所有緩存已被清除。" "cacheDeleted": "所有緩存已被清除。",
"userNoDescription": "這個人很懶,沒有留下什麼……",
"fieldTimeZone": "時區",
"fieldGender": "性別",
"fieldPronouns": "人稱代詞",
"fieldLocation": "位置",
"fieldLinks": "鏈接",
"fieldLinkName": "名稱",
"fieldLinkUrl": "鏈接"
} }

View File

@ -733,5 +733,13 @@
"cacheSize": "緩存資源大小", "cacheSize": "緩存資源大小",
"cacheDelete": "清除緩存", "cacheDelete": "清除緩存",
"cacheDeleteDescription": "從磁盤中移除緩存的圖片和其他資源,內容將從服務器重新下載。", "cacheDeleteDescription": "從磁盤中移除緩存的圖片和其他資源,內容將從服務器重新下載。",
"cacheDeleted": "所有緩存已被清除。" "cacheDeleted": "所有緩存已被清除。",
"userNoDescription": "這個人很懶,沒有留下什麼……",
"fieldTimeZone": "時區",
"fieldGender": "性別",
"fieldPronouns": "人稱代詞",
"fieldLocation": "位置",
"fieldLinks": "鏈接",
"fieldLinkName": "名稱",
"fieldLinkUrl": "鏈接"
} }

View File

@ -52,14 +52,14 @@ PODS:
- Firebase/Messaging (11.8.0): - Firebase/Messaging (11.8.0):
- Firebase/CoreOnly - Firebase/CoreOnly
- FirebaseMessaging (~> 11.8.0) - FirebaseMessaging (~> 11.8.0)
- firebase_analytics (11.4.3): - firebase_analytics (11.4.4):
- Firebase/Analytics (= 11.8.0) - Firebase/Analytics (= 11.8.0)
- firebase_core - firebase_core
- Flutter - Flutter
- firebase_core (3.12.0): - firebase_core (3.12.1):
- Firebase/CoreOnly (= 11.8.0) - Firebase/CoreOnly (= 11.8.0)
- Flutter - Flutter
- firebase_messaging (15.2.3): - firebase_messaging (15.2.4):
- Firebase/Messaging (= 11.8.0) - Firebase/Messaging (= 11.8.0)
- firebase_core - firebase_core
- Flutter - Flutter
@ -113,6 +113,8 @@ PODS:
- OrderedSet (~> 6.0.3) - OrderedSet (~> 6.0.3)
- flutter_native_splash (2.4.3): - flutter_native_splash (2.4.3):
- Flutter - Flutter
- flutter_timezone (0.0.1):
- Flutter
- flutter_udid (0.0.1): - flutter_udid (0.0.1):
- Flutter - Flutter
- SAMKeychain - SAMKeychain
@ -122,6 +124,8 @@ PODS:
- gal (1.0.0): - gal (1.0.0):
- Flutter - Flutter
- FlutterMacOS - FlutterMacOS
- geolocator_apple (1.2.0):
- Flutter
- GoogleAppMeasurement (11.8.0): - GoogleAppMeasurement (11.8.0):
- GoogleAppMeasurement/AdIdSupport (= 11.8.0) - GoogleAppMeasurement/AdIdSupport (= 11.8.0)
- GoogleUtilities/AppDelegateSwizzler (~> 8.0) - GoogleUtilities/AppDelegateSwizzler (~> 8.0)
@ -267,9 +271,11 @@ DEPENDENCIES:
- flutter_app_update (from `.symlinks/plugins/flutter_app_update/ios`) - flutter_app_update (from `.symlinks/plugins/flutter_app_update/ios`)
- flutter_inappwebview_ios (from `.symlinks/plugins/flutter_inappwebview_ios/ios`) - flutter_inappwebview_ios (from `.symlinks/plugins/flutter_inappwebview_ios/ios`)
- flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`) - flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
- flutter_timezone (from `.symlinks/plugins/flutter_timezone/ios`)
- flutter_udid (from `.symlinks/plugins/flutter_udid/ios`) - flutter_udid (from `.symlinks/plugins/flutter_udid/ios`)
- flutter_webrtc (from `.symlinks/plugins/flutter_webrtc/ios`) - flutter_webrtc (from `.symlinks/plugins/flutter_webrtc/ios`)
- gal (from `.symlinks/plugins/gal/darwin`) - gal (from `.symlinks/plugins/gal/darwin`)
- geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`)
- home_widget (from `.symlinks/plugins/home_widget/ios`) - home_widget (from `.symlinks/plugins/home_widget/ios`)
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
- in_app_review (from `.symlinks/plugins/in_app_review/ios`) - in_app_review (from `.symlinks/plugins/in_app_review/ios`)
@ -343,12 +349,16 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/flutter_inappwebview_ios/ios" :path: ".symlinks/plugins/flutter_inappwebview_ios/ios"
flutter_native_splash: flutter_native_splash:
:path: ".symlinks/plugins/flutter_native_splash/ios" :path: ".symlinks/plugins/flutter_native_splash/ios"
flutter_timezone:
:path: ".symlinks/plugins/flutter_timezone/ios"
flutter_udid: flutter_udid:
:path: ".symlinks/plugins/flutter_udid/ios" :path: ".symlinks/plugins/flutter_udid/ios"
flutter_webrtc: flutter_webrtc:
:path: ".symlinks/plugins/flutter_webrtc/ios" :path: ".symlinks/plugins/flutter_webrtc/ios"
gal: gal:
:path: ".symlinks/plugins/gal/darwin" :path: ".symlinks/plugins/gal/darwin"
geolocator_apple:
:path: ".symlinks/plugins/geolocator_apple/ios"
home_widget: home_widget:
:path: ".symlinks/plugins/home_widget/ios" :path: ".symlinks/plugins/home_widget/ios"
image_picker_ios: image_picker_ios:
@ -404,9 +414,9 @@ SPEC CHECKSUMS:
file_picker: b159e0c068aef54932bb15dc9fd1571818edaf49 file_picker: b159e0c068aef54932bb15dc9fd1571818edaf49
file_saver: 503e386464dbe118f630e17b4c2e1190fa0cf808 file_saver: 503e386464dbe118f630e17b4c2e1190fa0cf808
Firebase: d80354ed7f6df5f9aca55e9eb47cc4b634735eaf Firebase: d80354ed7f6df5f9aca55e9eb47cc4b634735eaf
firebase_analytics: 7ec1166af61987fa968766eb11587c562a5650ee firebase_analytics: e3b6782e70e32b7fa18f7cd233e3201975dd86aa
firebase_core: 6e223dfa350b2edceb729cea505eaaef59330682 firebase_core: ac395f994af4e28f6a38b59e05a88ca57abeb874
firebase_messaging: 07fde77ae28c08616a1d4d870450efc2b38cf40d firebase_messaging: 7e223f4ee7ca053bf4ce43748e84a6d774ec9728
FirebaseAnalytics: 4fd42def128146e24e480e89f310e3d8534ea42b FirebaseAnalytics: 4fd42def128146e24e480e89f310e3d8534ea42b
FirebaseCore: 99fe0c4b44a39f37d99e6404e02009d2db5d718d FirebaseCore: 99fe0c4b44a39f37d99e6404e02009d2db5d718d
FirebaseCoreInternal: df24ce5af28864660ecbd13596fc8dd3a8c34629 FirebaseCoreInternal: df24ce5af28864660ecbd13596fc8dd3a8c34629
@ -416,9 +426,11 @@ SPEC CHECKSUMS:
flutter_app_update: 65f61da626cb111d1b24674abc4b01728d7723bc flutter_app_update: 65f61da626cb111d1b24674abc4b01728d7723bc
flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4 flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4
flutter_native_splash: df59bb2e1421aa0282cb2e95618af4dcb0c56c29 flutter_native_splash: df59bb2e1421aa0282cb2e95618af4dcb0c56c29
flutter_timezone: ac3da59ac941ff1c98a2e1f0293420e020120282
flutter_udid: b2417673f287ee62817a1de3d1643f47b9f508ab flutter_udid: b2417673f287ee62817a1de3d1643f47b9f508ab
flutter_webrtc: 90260f83024b1b96d239a575ea4e3708e79344d1 flutter_webrtc: 90260f83024b1b96d239a575ea4e3708e79344d1
gal: 6a522c75909f1244732d4596d11d6a2f86ff37a5 gal: 6a522c75909f1244732d4596d11d6a2f86ff37a5
geolocator_apple: 9bcea1918ff7f0062d98345d238ae12718acfbc1
GoogleAppMeasurement: fc0817122bd4d4189164f85374e06773b9561896 GoogleAppMeasurement: fc0817122bd4d4189164f85374e06773b9561896
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d

View File

@ -184,6 +184,7 @@ class ChatMessageController extends ChangeNotifier {
} else { } else {
messages.insert(0, message); messages.insert(0, message);
} }
notifyListeners();
await _applyMessage(message); await _applyMessage(message);
notifyListeners(); notifyListeners();

View File

@ -108,8 +108,7 @@ void main() async {
} }
if (!kIsWeb && Platform.isAndroid) { if (!kIsWeb && Platform.isAndroid) {
final ImagePickerPlatform imagePickerImplementation = final ImagePickerPlatform imagePickerImplementation = ImagePickerPlatform.instance;
ImagePickerPlatform.instance;
if (imagePickerImplementation is ImagePickerAndroid) { if (imagePickerImplementation is ImagePickerAndroid) {
imagePickerImplementation.useAndroidPhotoPicker = true; imagePickerImplementation.useAndroidPhotoPicker = true;
} }
@ -228,8 +227,7 @@ class _AppSplashScreenState extends State<_AppSplashScreen> with TrayListener {
if (prefs.containsKey('first_boot_time')) { if (prefs.containsKey('first_boot_time')) {
final rawTime = prefs.getString('first_boot_time'); final rawTime = prefs.getString('first_boot_time');
final time = DateTime.tryParse(rawTime ?? ''); final time = DateTime.tryParse(rawTime ?? '');
if (time != null && if (time != null && time.isBefore(DateTime.now().subtract(const Duration(days: 3)))) {
time.isBefore(DateTime.now().subtract(const Duration(days: 3)))) {
final inAppReview = InAppReview.instance; final inAppReview = InAppReview.instance;
if (prefs.getBool('rating_requested') == true) return; if (prefs.getBool('rating_requested') == true) return;
if (await inAppReview.isAvailable()) { if (await inAppReview.isAvailable()) {
@ -260,18 +258,12 @@ class _AppSplashScreenState extends State<_AppSplashScreen> with TrayListener {
final remoteVersionString = resp.data?['tag_name'] ?? '0.0.0+0'; final remoteVersionString = resp.data?['tag_name'] ?? '0.0.0+0';
final remoteVersion = Version.parse(remoteVersionString.split('+').first); final remoteVersion = Version.parse(remoteVersionString.split('+').first);
final localVersion = Version.parse(localVersionString.split('+').first); final localVersion = Version.parse(localVersionString.split('+').first);
final remoteBuildNumber = final remoteBuildNumber = int.tryParse(remoteVersionString.split('+').last) ?? 0;
int.tryParse(remoteVersionString.split('+').last) ?? 0; final localBuildNumber = int.tryParse(localVersionString.split('+').last) ?? 0;
final localBuildNumber = logging.info("[Update] Local: $localVersionString, Remote: $remoteVersionString");
int.tryParse(localVersionString.split('+').last) ?? 0; if ((remoteVersion > localVersion || remoteBuildNumber > localBuildNumber) && mounted) {
logging.info(
"[Update] Local: $localVersionString, Remote: $remoteVersionString");
if ((remoteVersion > localVersion ||
remoteBuildNumber > localBuildNumber) &&
mounted) {
final config = context.read<ConfigProvider>(); final config = context.read<ConfigProvider>();
config.setUpdate( config.setUpdate(remoteVersionString, resp.data?['body'] ?? 'No changelog');
remoteVersionString, resp.data?['body'] ?? 'No changelog');
logging.info("[Update] Update available: $remoteVersionString"); logging.info("[Update] Update available: $remoteVersionString");
} }
} catch (e) { } catch (e) {
@ -363,9 +355,7 @@ class _AppSplashScreenState extends State<_AppSplashScreen> with TrayListener {
Future<void> _trayInitialization() async { Future<void> _trayInitialization() async {
if (kIsWeb || Platform.isAndroid || Platform.isIOS) return; if (kIsWeb || Platform.isAndroid || Platform.isIOS) return;
final icon = Platform.isWindows final icon = Platform.isWindows ? 'assets/icon/tray-icon.ico' : 'assets/icon/tray-icon.png';
? 'assets/icon/tray-icon.ico'
: 'assets/icon/tray-icon.png';
final appVersion = await PackageInfo.fromPlatform(); final appVersion = await PackageInfo.fromPlatform();
trayManager.addListener(this); trayManager.addListener(this);

View File

@ -45,8 +45,7 @@ class AccountScreen extends StatelessWidget {
? Stack( ? Stack(
fit: StackFit.expand, fit: StackFit.expand,
children: [ children: [
AutoResizeUniversalImage(sn.getAttachmentUrl(ua.user!.banner), AutoResizeUniversalImage(sn.getAttachmentUrl(ua.user!.banner), fit: BoxFit.cover),
fit: BoxFit.cover),
Positioned( Positioned(
top: 0, top: 0,
left: 0, left: 0,
@ -80,9 +79,7 @@ class AccountScreen extends StatelessWidget {
], ],
), ),
body: SingleChildScrollView( body: SingleChildScrollView(
child: ua.isAuthorized child: ua.isAuthorized ? _AuthorizedAccountScreen() : _UnauthorizedAccountScreen(),
? _AuthorizedAccountScreen()
: _UnauthorizedAccountScreen(),
), ),
); );
} }
@ -118,15 +115,19 @@ class _AuthorizedAccountScreen extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.baseline, crossAxisAlignment: CrossAxisAlignment.baseline,
textBaseline: TextBaseline.alphabetic, textBaseline: TextBaseline.alphabetic,
children: [ children: [
Text(ua.user!.nick) Text(ua.user!.nick).textStyle(Theme.of(context).textTheme.titleLarge!),
.textStyle(Theme.of(context).textTheme.titleLarge!),
const Gap(4), const Gap(4),
Text('@${ua.user!.name}') Text('@${ua.user!.name}').textStyle(Theme.of(context).textTheme.bodySmall!),
.textStyle(Theme.of(context).textTheme.bodySmall!),
], ],
), ),
Text(ua.user!.description) Text(
.textStyle(Theme.of(context).textTheme.bodyMedium!), (ua.user!.profile?.description.isNotEmpty ?? false)
? ua.user!.profile!.description
: 'userNoDescription'.tr(),
style: (ua.user!.profile?.description.isEmpty ?? true)
? TextStyle(fontStyle: FontStyle.italic)
: null,
).textStyle(Theme.of(context).textTheme.bodyMedium!),
], ],
), ),
); );
@ -225,9 +226,7 @@ class _UnauthorizedAccountScreen extends StatelessWidget {
child: Icon(Symbols.waving_hand, size: 28), child: Icon(Symbols.waving_hand, size: 28),
), ),
const Gap(8), const Gap(8),
Text('accountIntroTitle') Text('accountIntroTitle').tr().textStyle(Theme.of(context).textTheme.titleLarge!),
.tr()
.textStyle(Theme.of(context).textTheme.titleLarge!),
Text('accountIntroSubtitle').tr(), Text('accountIntroSubtitle').tr(),
], ],
).padding(all: 20), ).padding(all: 20),

View File

@ -6,6 +6,7 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_timezone/flutter_timezone.dart';
import 'package:gap/gap.dart'; import 'package:gap/gap.dart';
import 'package:image_picker/image_picker.dart'; import 'package:image_picker/image_picker.dart';
import 'package:material_symbols_icons/symbols.dart'; import 'package:material_symbols_icons/symbols.dart';
@ -36,11 +37,16 @@ class _ProfileEditScreenState extends State<ProfileEditScreen> {
final _firstNameController = TextEditingController(); final _firstNameController = TextEditingController();
final _lastNameController = TextEditingController(); final _lastNameController = TextEditingController();
final _descriptionController = TextEditingController(); final _descriptionController = TextEditingController();
final _timezoneController = TextEditingController();
final _genderController = TextEditingController();
final _pronounsController = TextEditingController();
final _locationController = TextEditingController();
final _birthdayController = TextEditingController(); final _birthdayController = TextEditingController();
String? _avatar; String? _avatar;
String? _banner; String? _banner;
DateTime? _birthday; DateTime? _birthday;
List<(String, String)>? _links;
bool _isBusy = false; bool _isBusy = false;
@ -51,15 +57,21 @@ class _ProfileEditScreenState extends State<ProfileEditScreen> {
final prof = ua.user!; final prof = ua.user!;
_usernameController.text = prof.name; _usernameController.text = prof.name;
_nicknameController.text = prof.nick; _nicknameController.text = prof.nick;
_descriptionController.text = prof.description; _descriptionController.text = prof.profile!.description;
_firstNameController.text = prof.profile!.firstName; _firstNameController.text = prof.profile!.firstName;
_lastNameController.text = prof.profile!.lastName; _lastNameController.text = prof.profile!.lastName;
_timezoneController.text = prof.profile!.timeZone;
_genderController.text = prof.profile!.gender;
_pronounsController.text = prof.profile!.pronouns;
_locationController.text = prof.profile!.location;
_avatar = prof.avatar; _avatar = prof.avatar;
_banner = prof.banner; _banner = prof.banner;
if (prof.profile!.birthday != null) { _links = prof.profile!.links.entries.map((ele) => (ele.key, ele.value)).toList();
_birthday = prof.profile!.birthday?.toLocal();
if(_birthday != null) {
_birthdayController.text = DateFormat(_kDateFormat).format( _birthdayController.text = DateFormat(_kDateFormat).format(
prof.profile!.birthday!.toLocal(), prof.profile!.birthday!.toLocal(),
); );
} }
} }
@ -166,7 +178,14 @@ class _ProfileEditScreenState extends State<ProfileEditScreen> {
'description': _descriptionController.value.text, 'description': _descriptionController.value.text,
'first_name': _firstNameController.value.text, 'first_name': _firstNameController.value.text,
'last_name': _lastNameController.value.text, 'last_name': _lastNameController.value.text,
'time_zone': _timezoneController.value.text,
'gender': _genderController.value.text,
'pronouns': _pronounsController.value.text,
'location': _locationController.value.text,
'birthday': _birthday?.toUtc().toIso8601String(), 'birthday': _birthday?.toUtc().toIso8601String(),
'links': {
for (final link in _links!.where((ele) => ele.$1.isNotEmpty && ele.$2.isNotEmpty)) link.$1: link.$2
},
}, },
); );
@ -197,6 +216,10 @@ class _ProfileEditScreenState extends State<ProfileEditScreen> {
_firstNameController.dispose(); _firstNameController.dispose();
_lastNameController.dispose(); _lastNameController.dispose();
_descriptionController.dispose(); _descriptionController.dispose();
_timezoneController.dispose();
_genderController.dispose();
_pronounsController.dispose();
_locationController.dispose();
_birthdayController.dispose(); _birthdayController.dispose();
super.dispose(); super.dispose();
} }
@ -262,6 +285,7 @@ class _ProfileEditScreenState extends State<ProfileEditScreen> {
).padding(horizontal: padding), ).padding(horizontal: padding),
const Gap(8 + 28), const Gap(8 + 28),
Column( Column(
spacing: 4,
children: [ children: [
TextField( TextField(
readOnly: true, readOnly: true,
@ -271,16 +295,16 @@ class _ProfileEditScreenState extends State<ProfileEditScreen> {
labelText: 'fieldUsername'.tr(), labelText: 'fieldUsername'.tr(),
helperText: 'fieldUsernameCannotEditHint'.tr(), helperText: 'fieldUsernameCannotEditHint'.tr(),
), ),
onTapOutside: (_) => FocusManager.instance.primaryFocus?.unfocus(),
), ),
const Gap(4),
TextField( TextField(
controller: _nicknameController, controller: _nicknameController,
decoration: InputDecoration( decoration: InputDecoration(
border: const UnderlineInputBorder(), border: const UnderlineInputBorder(),
labelText: 'fieldNickname'.tr(), labelText: 'fieldNickname'.tr(),
), ),
onTapOutside: (_) => FocusManager.instance.primaryFocus?.unfocus(),
), ),
const Gap(4),
Row( Row(
children: [ children: [
Flexible( Flexible(
@ -291,6 +315,7 @@ class _ProfileEditScreenState extends State<ProfileEditScreen> {
border: const UnderlineInputBorder(), border: const UnderlineInputBorder(),
labelText: 'fieldFirstName'.tr(), labelText: 'fieldFirstName'.tr(),
), ),
onTapOutside: (_) => FocusManager.instance.primaryFocus?.unfocus(),
), ),
), ),
const Gap(8), const Gap(8),
@ -302,11 +327,38 @@ class _ProfileEditScreenState extends State<ProfileEditScreen> {
border: const UnderlineInputBorder(), border: const UnderlineInputBorder(),
labelText: 'fieldLastName'.tr(), labelText: 'fieldLastName'.tr(),
), ),
onTapOutside: (_) => FocusManager.instance.primaryFocus?.unfocus(),
),
),
],
),
Row(
children: [
Flexible(
flex: 1,
child: TextField(
controller: _genderController,
decoration: InputDecoration(
border: const UnderlineInputBorder(),
labelText: 'fieldGender'.tr(),
),
onTapOutside: (_) => FocusManager.instance.primaryFocus?.unfocus(),
),
),
const Gap(4),
Flexible(
flex: 1,
child: TextField(
controller: _pronounsController,
decoration: InputDecoration(
border: const UnderlineInputBorder(),
labelText: 'fieldPronouns'.tr(),
),
onTapOutside: (_) => FocusManager.instance.primaryFocus?.unfocus(),
), ),
), ),
], ],
), ),
const Gap(4),
TextField( TextField(
controller: _descriptionController, controller: _descriptionController,
keyboardType: TextInputType.multiline, keyboardType: TextInputType.multiline,
@ -316,8 +368,51 @@ class _ProfileEditScreenState extends State<ProfileEditScreen> {
border: const UnderlineInputBorder(), border: const UnderlineInputBorder(),
labelText: 'fieldDescription'.tr(), labelText: 'fieldDescription'.tr(),
), ),
onTapOutside: (_) => FocusManager.instance.primaryFocus?.unfocus(),
),
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
child: TextField(
controller: _timezoneController,
decoration: InputDecoration(
border: const UnderlineInputBorder(),
labelText: 'fieldTimeZone'.tr(),
),
onTapOutside: (_) => FocusManager.instance.primaryFocus?.unfocus(),
),
),
const Gap(4),
StyledWidget(IconButton(
icon: const Icon(Symbols.calendar_month),
visualDensity: VisualDensity(horizontal: -4, vertical: -4),
padding: EdgeInsets.zero,
constraints: const BoxConstraints(),
onPressed: () async {
_timezoneController.text = await FlutterTimezone.getLocalTimezone();
},
)).padding(top: 6),
const Gap(4),
StyledWidget(IconButton(
icon: const Icon(Symbols.clear),
visualDensity: VisualDensity(horizontal: -4, vertical: -4),
padding: EdgeInsets.zero,
constraints: const BoxConstraints(),
onPressed: () {
_timezoneController.clear();
},
)).padding(top: 6),
],
),
TextField(
controller: _locationController,
decoration: InputDecoration(
border: const UnderlineInputBorder(),
labelText: 'fieldLocation'.tr(),
),
onTapOutside: (_) => FocusManager.instance.primaryFocus?.unfocus(),
), ),
const Gap(4),
TextField( TextField(
controller: _birthdayController, controller: _birthdayController,
readOnly: true, readOnly: true,
@ -327,6 +422,75 @@ class _ProfileEditScreenState extends State<ProfileEditScreen> {
), ),
onTap: () => _selectBirthday(), onTap: () => _selectBirthday(),
), ),
if (_links != null)
Card(
margin: const EdgeInsets.only(top: 16, bottom: 4),
child: Container(
width: double.infinity,
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Expanded(
child: Text(
'fieldLinks'.tr(),
style: Theme.of(context).textTheme.titleMedium!.copyWith(fontSize: 17),
),
),
IconButton(
padding: EdgeInsets.zero,
constraints: const BoxConstraints(),
visualDensity: VisualDensity(horizontal: -4, vertical: -4),
icon: const Icon(Symbols.add),
onPressed: () {
setState(() => _links!.add(('', '')));
},
),
],
),
const Gap(8),
for (var idx = 0; idx < _links!.length; idx++)
Row(
children: [
Flexible(
flex: 1,
child: TextFormField(
initialValue: _links![idx].$1,
decoration: InputDecoration(
isDense: true,
border: const OutlineInputBorder(),
labelText: 'fieldLinkName'.tr(),
),
onChanged: (value) {
_links![idx] = (value, _links![idx].$2);
},
onTapOutside: (_) => FocusManager.instance.primaryFocus?.unfocus(),
),
),
const Gap(8),
Flexible(
flex: 1,
child: TextFormField(
initialValue: _links![idx].$2,
decoration: InputDecoration(
isDense: true,
border: const OutlineInputBorder(),
labelText: 'fieldLinkUrl'.tr(),
),
onChanged: (value) {
_links![idx] = (_links![idx].$1, value);
},
onTapOutside: (_) => FocusManager.instance.primaryFocus?.unfocus(),
),
),
],
),
],
),
),
),
], ],
).padding(horizontal: padding + 8), ).padding(horizontal: padding + 8),
const Gap(12), const Gap(12),
@ -340,6 +504,7 @@ class _ProfileEditScreenState extends State<ProfileEditScreen> {
), ),
], ],
).padding(horizontal: padding), ).padding(horizontal: padding),
Gap(MediaQuery.of(context).padding.bottom),
], ],
), ),
), ),

View File

@ -406,7 +406,7 @@ class _UserScreenState extends State<UserScreen>
], ],
).padding(right: 8), ).padding(right: 8),
const Gap(12), const Gap(12),
Text(_account!.description).padding(horizontal: 8), Text(_account!.profile!.description).padding(horizontal: 8),
const Gap(4), const Gap(4),
Card( Card(
child: Row( child: Row(

View File

@ -97,7 +97,7 @@ class _AccountPublisherEditScreenState extends State<AccountPublisherEditScreen>
_banner = ua.user!.banner; _banner = ua.user!.banner;
_nickController.text = ua.user!.nick; _nickController.text = ua.user!.nick;
_nameController.text = ua.user!.name; _nameController.text = ua.user!.name;
_descriptionController.text = ua.user!.description; _descriptionController.text = ua.user!.profile!.description;
setState(() {}); setState(() {});
} }

View File

@ -109,7 +109,7 @@ class _PublisherNewPersonalState extends State<_PublisherNewPersonal> {
_nameController.text = ua.user!.name; _nameController.text = ua.user!.name;
_nickController.text = ua.user!.nick; _nickController.text = ua.user!.nick;
_descriptionController.text = ua.user!.description; _descriptionController.text = ua.user!.profile!.description;
} }
@override @override

View File

@ -4,7 +4,7 @@ part 'account.freezed.dart';
part 'account.g.dart'; part 'account.g.dart';
@freezed @freezed
class SnAccount with _$SnAccount { abstract class SnAccount with _$SnAccount {
const SnAccount._(); const SnAccount._();
const factory SnAccount({ const factory SnAccount({
@ -16,7 +16,6 @@ class SnAccount with _$SnAccount {
required List<SnAccountContact>? contacts, required List<SnAccountContact>? contacts,
@Default("") String avatar, @Default("") String avatar,
@Default("") String banner, @Default("") String banner,
required String description,
required String name, required String name,
required String nick, required String nick,
@Default({}) Map<String, dynamic> permNodes, @Default({}) Map<String, dynamic> permNodes,
@ -35,7 +34,7 @@ class SnAccount with _$SnAccount {
} }
@freezed @freezed
class SnAccountContact with _$SnAccountContact { abstract class SnAccountContact with _$SnAccountContact {
const factory SnAccountContact({ const factory SnAccountContact({
required int accountId, required int accountId,
required String content, required String content,
@ -54,18 +53,24 @@ class SnAccountContact with _$SnAccountContact {
} }
@freezed @freezed
class SnAccountProfile with _$SnAccountProfile { abstract class SnAccountProfile with _$SnAccountProfile {
const factory SnAccountProfile({ const factory SnAccountProfile({
required int id, required int id,
required int accountId,
required DateTime? birthday,
required DateTime createdAt, required DateTime createdAt,
required DateTime updatedAt,
required DateTime? deletedAt, required DateTime? deletedAt,
required int experience,
required String firstName, required String firstName,
required String lastName, required String lastName,
required String description,
required String timeZone,
required String location,
required String pronouns,
required String gender,
@Default({}) Map<String, String> links,
required int experience,
required DateTime? lastSeenAt, required DateTime? lastSeenAt,
required DateTime updatedAt, required DateTime? birthday,
required int accountId,
}) = _SnAccountProfile; }) = _SnAccountProfile;
factory SnAccountProfile.fromJson(Map<String, Object?> json) => factory SnAccountProfile.fromJson(Map<String, Object?> json) =>
@ -73,7 +78,7 @@ class SnAccountProfile with _$SnAccountProfile {
} }
@freezed @freezed
class SnRelationship with _$SnRelationship { abstract class SnRelationship with _$SnRelationship {
const factory SnRelationship({ const factory SnRelationship({
required int id, required int id,
required DateTime createdAt, required DateTime createdAt,
@ -92,7 +97,7 @@ class SnRelationship with _$SnRelationship {
} }
@freezed @freezed
class SnAccountBadge with _$SnAccountBadge { abstract class SnAccountBadge with _$SnAccountBadge {
const factory SnAccountBadge({ const factory SnAccountBadge({
required int id, required int id,
required DateTime createdAt, required DateTime createdAt,
@ -108,7 +113,7 @@ class SnAccountBadge with _$SnAccountBadge {
} }
@freezed @freezed
class SnAccountStatusInfo with _$SnAccountStatusInfo { abstract class SnAccountStatusInfo with _$SnAccountStatusInfo {
const factory SnAccountStatusInfo({ const factory SnAccountStatusInfo({
required bool isDisturbable, required bool isDisturbable,
required bool isOnline, required bool isOnline,
@ -121,7 +126,7 @@ class SnAccountStatusInfo with _$SnAccountStatusInfo {
} }
@freezed @freezed
class SnAbuseReport with _$SnAbuseReport { abstract class SnAbuseReport with _$SnAbuseReport {
const factory SnAbuseReport({ const factory SnAbuseReport({
required int id, required int id,
required DateTime createdAt, required DateTime createdAt,

File diff suppressed because it is too large Load Diff

View File

@ -6,8 +6,7 @@ part of 'account.dart';
// JsonSerializableGenerator // JsonSerializableGenerator
// ************************************************************************** // **************************************************************************
_$SnAccountImpl _$$SnAccountImplFromJson(Map<String, dynamic> json) => _SnAccount _$SnAccountFromJson(Map<String, dynamic> json) => _SnAccount(
_$SnAccountImpl(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -22,7 +21,6 @@ _$SnAccountImpl _$$SnAccountImplFromJson(Map<String, dynamic> json) =>
.toList(), .toList(),
avatar: json['avatar'] as String? ?? "", avatar: json['avatar'] as String? ?? "",
banner: json['banner'] as String? ?? "", banner: json['banner'] as String? ?? "",
description: json['description'] as String,
name: json['name'] as String, name: json['name'] as String,
nick: json['nick'] as String, nick: json['nick'] as String,
permNodes: json['perm_nodes'] as Map<String, dynamic>? ?? const {}, permNodes: json['perm_nodes'] as Map<String, dynamic>? ?? const {},
@ -43,7 +41,7 @@ _$SnAccountImpl _$$SnAccountImplFromJson(Map<String, dynamic> json) =>
automatedId: (json['automated_id'] as num?)?.toInt(), automatedId: (json['automated_id'] as num?)?.toInt(),
); );
Map<String, dynamic> _$$SnAccountImplToJson(_$SnAccountImpl instance) => Map<String, dynamic> _$SnAccountToJson(_SnAccount instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
@ -53,7 +51,6 @@ Map<String, dynamic> _$$SnAccountImplToJson(_$SnAccountImpl instance) =>
'contacts': instance.contacts?.map((e) => e.toJson()).toList(), 'contacts': instance.contacts?.map((e) => e.toJson()).toList(),
'avatar': instance.avatar, 'avatar': instance.avatar,
'banner': instance.banner, 'banner': instance.banner,
'description': instance.description,
'name': instance.name, 'name': instance.name,
'nick': instance.nick, 'nick': instance.nick,
'perm_nodes': instance.permNodes, 'perm_nodes': instance.permNodes,
@ -67,9 +64,8 @@ Map<String, dynamic> _$$SnAccountImplToJson(_$SnAccountImpl instance) =>
'automated_id': instance.automatedId, 'automated_id': instance.automatedId,
}; };
_$SnAccountContactImpl _$$SnAccountContactImplFromJson( _SnAccountContact _$SnAccountContactFromJson(Map<String, dynamic> json) =>
Map<String, dynamic> json) => _SnAccountContact(
_$SnAccountContactImpl(
accountId: (json['account_id'] as num).toInt(), accountId: (json['account_id'] as num).toInt(),
content: json['content'] as String, content: json['content'] as String,
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
@ -86,8 +82,7 @@ _$SnAccountContactImpl _$$SnAccountContactImplFromJson(
: DateTime.parse(json['verified_at'] as String), : DateTime.parse(json['verified_at'] as String),
); );
Map<String, dynamic> _$$SnAccountContactImplToJson( Map<String, dynamic> _$SnAccountContactToJson(_SnAccountContact instance) =>
_$SnAccountContactImpl instance) =>
<String, dynamic>{ <String, dynamic>{
'account_id': instance.accountId, 'account_id': instance.accountId,
'content': instance.content, 'content': instance.content,
@ -101,44 +96,57 @@ Map<String, dynamic> _$$SnAccountContactImplToJson(
'verified_at': instance.verifiedAt?.toIso8601String(), 'verified_at': instance.verifiedAt?.toIso8601String(),
}; };
_$SnAccountProfileImpl _$$SnAccountProfileImplFromJson( _SnAccountProfile _$SnAccountProfileFromJson(Map<String, dynamic> json) =>
Map<String, dynamic> json) => _SnAccountProfile(
_$SnAccountProfileImpl(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
accountId: (json['account_id'] as num).toInt(),
birthday: json['birthday'] == null
? null
: DateTime.parse(json['birthday'] as String),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String),
deletedAt: json['deleted_at'] == null deletedAt: json['deleted_at'] == null
? null ? null
: DateTime.parse(json['deleted_at'] as String), : DateTime.parse(json['deleted_at'] as String),
experience: (json['experience'] as num).toInt(),
firstName: json['first_name'] as String, firstName: json['first_name'] as String,
lastName: json['last_name'] as String, lastName: json['last_name'] as String,
description: json['description'] as String,
timeZone: json['time_zone'] as String,
location: json['location'] as String,
pronouns: json['pronouns'] as String,
gender: json['gender'] as String,
links: (json['links'] as Map<String, dynamic>?)?.map(
(k, e) => MapEntry(k, e as String),
) ??
const {},
experience: (json['experience'] as num).toInt(),
lastSeenAt: json['last_seen_at'] == null lastSeenAt: json['last_seen_at'] == null
? null ? null
: DateTime.parse(json['last_seen_at'] as String), : DateTime.parse(json['last_seen_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), birthday: json['birthday'] == null
? null
: DateTime.parse(json['birthday'] as String),
accountId: (json['account_id'] as num).toInt(),
); );
Map<String, dynamic> _$$SnAccountProfileImplToJson( Map<String, dynamic> _$SnAccountProfileToJson(_SnAccountProfile instance) =>
_$SnAccountProfileImpl instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'account_id': instance.accountId,
'birthday': instance.birthday?.toIso8601String(),
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
'updated_at': instance.updatedAt.toIso8601String(),
'deleted_at': instance.deletedAt?.toIso8601String(), 'deleted_at': instance.deletedAt?.toIso8601String(),
'experience': instance.experience,
'first_name': instance.firstName, 'first_name': instance.firstName,
'last_name': instance.lastName, 'last_name': instance.lastName,
'description': instance.description,
'time_zone': instance.timeZone,
'location': instance.location,
'pronouns': instance.pronouns,
'gender': instance.gender,
'links': instance.links,
'experience': instance.experience,
'last_seen_at': instance.lastSeenAt?.toIso8601String(), 'last_seen_at': instance.lastSeenAt?.toIso8601String(),
'updated_at': instance.updatedAt.toIso8601String(), 'birthday': instance.birthday?.toIso8601String(),
'account_id': instance.accountId,
}; };
_$SnRelationshipImpl _$$SnRelationshipImplFromJson(Map<String, dynamic> json) => _SnRelationship _$SnRelationshipFromJson(Map<String, dynamic> json) =>
_$SnRelationshipImpl( _SnRelationship(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -157,8 +165,7 @@ _$SnRelationshipImpl _$$SnRelationshipImplFromJson(Map<String, dynamic> json) =>
permNodes: json['perm_nodes'] as Map<String, dynamic>? ?? const {}, permNodes: json['perm_nodes'] as Map<String, dynamic>? ?? const {},
); );
Map<String, dynamic> _$$SnRelationshipImplToJson( Map<String, dynamic> _$SnRelationshipToJson(_SnRelationship instance) =>
_$SnRelationshipImpl instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
@ -172,8 +179,8 @@ Map<String, dynamic> _$$SnRelationshipImplToJson(
'perm_nodes': instance.permNodes, 'perm_nodes': instance.permNodes,
}; };
_$SnAccountBadgeImpl _$$SnAccountBadgeImplFromJson(Map<String, dynamic> json) => _SnAccountBadge _$SnAccountBadgeFromJson(Map<String, dynamic> json) =>
_$SnAccountBadgeImpl( _SnAccountBadge(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -183,8 +190,7 @@ _$SnAccountBadgeImpl _$$SnAccountBadgeImplFromJson(Map<String, dynamic> json) =>
metadata: json['metadata'] as Map<String, dynamic>? ?? const {}, metadata: json['metadata'] as Map<String, dynamic>? ?? const {},
); );
Map<String, dynamic> _$$SnAccountBadgeImplToJson( Map<String, dynamic> _$SnAccountBadgeToJson(_SnAccountBadge instance) =>
_$SnAccountBadgeImpl instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
@ -195,9 +201,8 @@ Map<String, dynamic> _$$SnAccountBadgeImplToJson(
'metadata': instance.metadata, 'metadata': instance.metadata,
}; };
_$SnAccountStatusInfoImpl _$$SnAccountStatusInfoImplFromJson( _SnAccountStatusInfo _$SnAccountStatusInfoFromJson(Map<String, dynamic> json) =>
Map<String, dynamic> json) => _SnAccountStatusInfo(
_$SnAccountStatusInfoImpl(
isDisturbable: json['is_disturbable'] as bool, isDisturbable: json['is_disturbable'] as bool,
isOnline: json['is_online'] as bool, isOnline: json['is_online'] as bool,
lastSeenAt: json['last_seen_at'] == null lastSeenAt: json['last_seen_at'] == null
@ -206,8 +211,8 @@ _$SnAccountStatusInfoImpl _$$SnAccountStatusInfoImplFromJson(
status: json['status'], status: json['status'],
); );
Map<String, dynamic> _$$SnAccountStatusInfoImplToJson( Map<String, dynamic> _$SnAccountStatusInfoToJson(
_$SnAccountStatusInfoImpl instance) => _SnAccountStatusInfo instance) =>
<String, dynamic>{ <String, dynamic>{
'is_disturbable': instance.isDisturbable, 'is_disturbable': instance.isDisturbable,
'is_online': instance.isOnline, 'is_online': instance.isOnline,
@ -215,8 +220,8 @@ Map<String, dynamic> _$$SnAccountStatusInfoImplToJson(
'status': instance.status, 'status': instance.status,
}; };
_$SnAbuseReportImpl _$$SnAbuseReportImplFromJson(Map<String, dynamic> json) => _SnAbuseReport _$SnAbuseReportFromJson(Map<String, dynamic> json) =>
_$SnAbuseReportImpl( _SnAbuseReport(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -229,7 +234,7 @@ _$SnAbuseReportImpl _$$SnAbuseReportImplFromJson(Map<String, dynamic> json) =>
accountId: (json['account_id'] as num).toInt(), accountId: (json['account_id'] as num).toInt(),
); );
Map<String, dynamic> _$$SnAbuseReportImplToJson(_$SnAbuseReportImpl instance) => Map<String, dynamic> _$SnAbuseReportToJson(_SnAbuseReport instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),

View File

@ -12,7 +12,7 @@ enum SnMediaType {
} }
@freezed @freezed
class SnAttachment with _$SnAttachment { abstract class SnAttachment with _$SnAttachment {
const SnAttachment._(); const SnAttachment._();
const factory SnAttachment({ const factory SnAttachment({
@ -65,7 +65,7 @@ class SnAttachment with _$SnAttachment {
} }
@freezed @freezed
class SnAttachmentFragment with _$SnAttachmentFragment { abstract class SnAttachmentFragment with _$SnAttachmentFragment {
const SnAttachmentFragment._(); const SnAttachmentFragment._();
const factory SnAttachmentFragment({ const factory SnAttachmentFragment({
@ -96,7 +96,7 @@ class SnAttachmentFragment with _$SnAttachmentFragment {
} }
@freezed @freezed
class SnAttachmentPool with _$SnAttachmentPool { abstract class SnAttachmentPool with _$SnAttachmentPool {
const factory SnAttachmentPool({ const factory SnAttachmentPool({
required int id, required int id,
required DateTime createdAt, required DateTime createdAt,
@ -113,7 +113,7 @@ class SnAttachmentPool with _$SnAttachmentPool {
} }
@freezed @freezed
class SnAttachmentDestination with _$SnAttachmentDestination { abstract class SnAttachmentDestination with _$SnAttachmentDestination {
const factory SnAttachmentDestination({ const factory SnAttachmentDestination({
@Default(0) int id, @Default(0) int id,
required String type, required String type,
@ -126,7 +126,7 @@ class SnAttachmentDestination with _$SnAttachmentDestination {
} }
@freezed @freezed
class SnAttachmentBoost with _$SnAttachmentBoost { abstract class SnAttachmentBoost with _$SnAttachmentBoost {
const factory SnAttachmentBoost({ const factory SnAttachmentBoost({
required int id, required int id,
required DateTime createdAt, required DateTime createdAt,
@ -143,7 +143,7 @@ class SnAttachmentBoost with _$SnAttachmentBoost {
} }
@freezed @freezed
class SnSticker with _$SnSticker { abstract class SnSticker with _$SnSticker {
const factory SnSticker({ const factory SnSticker({
required int id, required int id,
required DateTime createdAt, required DateTime createdAt,
@ -162,7 +162,7 @@ class SnSticker with _$SnSticker {
} }
@freezed @freezed
class SnStickerPack with _$SnStickerPack { abstract class SnStickerPack with _$SnStickerPack {
const factory SnStickerPack({ const factory SnStickerPack({
required int id, required int id,
required DateTime createdAt, required DateTime createdAt,
@ -179,7 +179,7 @@ class SnStickerPack with _$SnStickerPack {
} }
@freezed @freezed
class SnAttachmentBilling with _$SnAttachmentBilling { abstract class SnAttachmentBilling with _$SnAttachmentBilling {
const factory SnAttachmentBilling({ const factory SnAttachmentBilling({
required int currentBytes, required int currentBytes,
required int discountFileSize, required int discountFileSize,

File diff suppressed because it is too large Load Diff

View File

@ -6,8 +6,8 @@ part of 'attachment.dart';
// JsonSerializableGenerator // JsonSerializableGenerator
// ************************************************************************** // **************************************************************************
_$SnAttachmentImpl _$$SnAttachmentImplFromJson(Map<String, dynamic> json) => _SnAttachment _$SnAttachmentFromJson(Map<String, dynamic> json) =>
_$SnAttachmentImpl( _SnAttachment(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -57,7 +57,7 @@ _$SnAttachmentImpl _$$SnAttachmentImplFromJson(Map<String, dynamic> json) =>
metadata: json['metadata'] as Map<String, dynamic>? ?? const {}, metadata: json['metadata'] as Map<String, dynamic>? ?? const {},
); );
Map<String, dynamic> _$$SnAttachmentImplToJson(_$SnAttachmentImpl instance) => Map<String, dynamic> _$SnAttachmentToJson(_SnAttachment instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
@ -92,9 +92,9 @@ Map<String, dynamic> _$$SnAttachmentImplToJson(_$SnAttachmentImpl instance) =>
'metadata': instance.metadata, 'metadata': instance.metadata,
}; };
_$SnAttachmentFragmentImpl _$$SnAttachmentFragmentImplFromJson( _SnAttachmentFragment _$SnAttachmentFragmentFromJson(
Map<String, dynamic> json) => Map<String, dynamic> json) =>
_$SnAttachmentFragmentImpl( _SnAttachmentFragment(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -119,8 +119,8 @@ _$SnAttachmentFragmentImpl _$$SnAttachmentFragmentImplFromJson(
const [], const [],
); );
Map<String, dynamic> _$$SnAttachmentFragmentImplToJson( Map<String, dynamic> _$SnAttachmentFragmentToJson(
_$SnAttachmentFragmentImpl instance) => _SnAttachmentFragment instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
@ -138,9 +138,8 @@ Map<String, dynamic> _$$SnAttachmentFragmentImplToJson(
'file_chunks_missing': instance.fileChunksMissing, 'file_chunks_missing': instance.fileChunksMissing,
}; };
_$SnAttachmentPoolImpl _$$SnAttachmentPoolImplFromJson( _SnAttachmentPool _$SnAttachmentPoolFromJson(Map<String, dynamic> json) =>
Map<String, dynamic> json) => _SnAttachmentPool(
_$SnAttachmentPoolImpl(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -154,8 +153,7 @@ _$SnAttachmentPoolImpl _$$SnAttachmentPoolImplFromJson(
accountId: (json['account_id'] as num?)?.toInt(), accountId: (json['account_id'] as num?)?.toInt(),
); );
Map<String, dynamic> _$$SnAttachmentPoolImplToJson( Map<String, dynamic> _$SnAttachmentPoolToJson(_SnAttachmentPool instance) =>
_$SnAttachmentPoolImpl instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
@ -168,9 +166,9 @@ Map<String, dynamic> _$$SnAttachmentPoolImplToJson(
'account_id': instance.accountId, 'account_id': instance.accountId,
}; };
_$SnAttachmentDestinationImpl _$$SnAttachmentDestinationImplFromJson( _SnAttachmentDestination _$SnAttachmentDestinationFromJson(
Map<String, dynamic> json) => Map<String, dynamic> json) =>
_$SnAttachmentDestinationImpl( _SnAttachmentDestination(
id: (json['id'] as num?)?.toInt() ?? 0, id: (json['id'] as num?)?.toInt() ?? 0,
type: json['type'] as String, type: json['type'] as String,
label: json['label'] as String, label: json['label'] as String,
@ -178,8 +176,8 @@ _$SnAttachmentDestinationImpl _$$SnAttachmentDestinationImplFromJson(
isBoost: json['is_boost'] as bool, isBoost: json['is_boost'] as bool,
); );
Map<String, dynamic> _$$SnAttachmentDestinationImplToJson( Map<String, dynamic> _$SnAttachmentDestinationToJson(
_$SnAttachmentDestinationImpl instance) => _SnAttachmentDestination instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'type': instance.type, 'type': instance.type,
@ -188,9 +186,8 @@ Map<String, dynamic> _$$SnAttachmentDestinationImplToJson(
'is_boost': instance.isBoost, 'is_boost': instance.isBoost,
}; };
_$SnAttachmentBoostImpl _$$SnAttachmentBoostImplFromJson( _SnAttachmentBoost _$SnAttachmentBoostFromJson(Map<String, dynamic> json) =>
Map<String, dynamic> json) => _SnAttachmentBoost(
_$SnAttachmentBoostImpl(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -205,8 +202,7 @@ _$SnAttachmentBoostImpl _$$SnAttachmentBoostImplFromJson(
account: (json['account'] as num).toInt(), account: (json['account'] as num).toInt(),
); );
Map<String, dynamic> _$$SnAttachmentBoostImplToJson( Map<String, dynamic> _$SnAttachmentBoostToJson(_SnAttachmentBoost instance) =>
_$SnAttachmentBoostImpl instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
@ -219,8 +215,7 @@ Map<String, dynamic> _$$SnAttachmentBoostImplToJson(
'account': instance.account, 'account': instance.account,
}; };
_$SnStickerImpl _$$SnStickerImplFromJson(Map<String, dynamic> json) => _SnSticker _$SnStickerFromJson(Map<String, dynamic> json) => _SnSticker(
_$SnStickerImpl(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -237,7 +232,7 @@ _$SnStickerImpl _$$SnStickerImplFromJson(Map<String, dynamic> json) =>
accountId: (json['account_id'] as num).toInt(), accountId: (json['account_id'] as num).toInt(),
); );
Map<String, dynamic> _$$SnStickerImplToJson(_$SnStickerImpl instance) => Map<String, dynamic> _$SnStickerToJson(_SnSticker instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
@ -252,8 +247,8 @@ Map<String, dynamic> _$$SnStickerImplToJson(_$SnStickerImpl instance) =>
'account_id': instance.accountId, 'account_id': instance.accountId,
}; };
_$SnStickerPackImpl _$$SnStickerPackImplFromJson(Map<String, dynamic> json) => _SnStickerPack _$SnStickerPackFromJson(Map<String, dynamic> json) =>
_$SnStickerPackImpl( _SnStickerPack(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -269,7 +264,7 @@ _$SnStickerPackImpl _$$SnStickerPackImplFromJson(Map<String, dynamic> json) =>
accountId: (json['account_id'] as num).toInt(), accountId: (json['account_id'] as num).toInt(),
); );
Map<String, dynamic> _$$SnStickerPackImplToJson(_$SnStickerPackImpl instance) => Map<String, dynamic> _$SnStickerPackToJson(_SnStickerPack instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
@ -282,16 +277,15 @@ Map<String, dynamic> _$$SnStickerPackImplToJson(_$SnStickerPackImpl instance) =>
'account_id': instance.accountId, 'account_id': instance.accountId,
}; };
_$SnAttachmentBillingImpl _$$SnAttachmentBillingImplFromJson( _SnAttachmentBilling _$SnAttachmentBillingFromJson(Map<String, dynamic> json) =>
Map<String, dynamic> json) => _SnAttachmentBilling(
_$SnAttachmentBillingImpl(
currentBytes: (json['current_bytes'] as num).toInt(), currentBytes: (json['current_bytes'] as num).toInt(),
discountFileSize: (json['discount_file_size'] as num).toInt(), discountFileSize: (json['discount_file_size'] as num).toInt(),
includedRatio: (json['included_ratio'] as num).toDouble(), includedRatio: (json['included_ratio'] as num).toDouble(),
); );
Map<String, dynamic> _$$SnAttachmentBillingImplToJson( Map<String, dynamic> _$SnAttachmentBillingToJson(
_$SnAttachmentBillingImpl instance) => _SnAttachmentBilling instance) =>
<String, dynamic>{ <String, dynamic>{
'current_bytes': instance.currentBytes, 'current_bytes': instance.currentBytes,
'discount_file_size': instance.discountFileSize, 'discount_file_size': instance.discountFileSize,

View File

@ -4,7 +4,7 @@ part 'auth.freezed.dart';
part 'auth.g.dart'; part 'auth.g.dart';
@freezed @freezed
class SnAuthResult with _$SnAuthResult { abstract class SnAuthResult with _$SnAuthResult {
const factory SnAuthResult({ const factory SnAuthResult({
required bool isFinished, required bool isFinished,
required SnAuthTicket? ticket, required SnAuthTicket? ticket,
@ -15,7 +15,7 @@ class SnAuthResult with _$SnAuthResult {
} }
@freezed @freezed
class SnAuthTicket with _$SnAuthTicket { abstract class SnAuthTicket with _$SnAuthTicket {
const factory SnAuthTicket({ const factory SnAuthTicket({
required int id, required int id,
required DateTime createdAt, required DateTime createdAt,
@ -41,7 +41,7 @@ class SnAuthTicket with _$SnAuthTicket {
} }
@freezed @freezed
class SnAuthFactor with _$SnAuthFactor { abstract class SnAuthFactor with _$SnAuthFactor {
const factory SnAuthFactor({ const factory SnAuthFactor({
required int id, required int id,
required DateTime createdAt, required DateTime createdAt,

File diff suppressed because it is too large Load Diff

View File

@ -6,22 +6,22 @@ part of 'auth.dart';
// JsonSerializableGenerator // JsonSerializableGenerator
// ************************************************************************** // **************************************************************************
_$SnAuthResultImpl _$$SnAuthResultImplFromJson(Map<String, dynamic> json) => _SnAuthResult _$SnAuthResultFromJson(Map<String, dynamic> json) =>
_$SnAuthResultImpl( _SnAuthResult(
isFinished: json['is_finished'] as bool, isFinished: json['is_finished'] as bool,
ticket: json['ticket'] == null ticket: json['ticket'] == null
? null ? null
: SnAuthTicket.fromJson(json['ticket'] as Map<String, dynamic>), : SnAuthTicket.fromJson(json['ticket'] as Map<String, dynamic>),
); );
Map<String, dynamic> _$$SnAuthResultImplToJson(_$SnAuthResultImpl instance) => Map<String, dynamic> _$SnAuthResultToJson(_SnAuthResult instance) =>
<String, dynamic>{ <String, dynamic>{
'is_finished': instance.isFinished, 'is_finished': instance.isFinished,
'ticket': instance.ticket?.toJson(), 'ticket': instance.ticket?.toJson(),
}; };
_$SnAuthTicketImpl _$$SnAuthTicketImplFromJson(Map<String, dynamic> json) => _SnAuthTicket _$SnAuthTicketFromJson(Map<String, dynamic> json) =>
_$SnAuthTicketImpl( _SnAuthTicket(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -52,7 +52,7 @@ _$SnAuthTicketImpl _$$SnAuthTicketImplFromJson(Map<String, dynamic> json) =>
const [], const [],
); );
Map<String, dynamic> _$$SnAuthTicketImplToJson(_$SnAuthTicketImpl instance) => Map<String, dynamic> _$SnAuthTicketToJson(_SnAuthTicket instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
@ -73,8 +73,8 @@ Map<String, dynamic> _$$SnAuthTicketImplToJson(_$SnAuthTicketImpl instance) =>
'factor_trail': instance.factorTrail, 'factor_trail': instance.factorTrail,
}; };
_$SnAuthFactorImpl _$$SnAuthFactorImplFromJson(Map<String, dynamic> json) => _SnAuthFactor _$SnAuthFactorFromJson(Map<String, dynamic> json) =>
_$SnAuthFactorImpl( _SnAuthFactor(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -86,7 +86,7 @@ _$SnAuthFactorImpl _$$SnAuthFactorImplFromJson(Map<String, dynamic> json) =>
accountId: (json['account_id'] as num?)?.toInt(), accountId: (json['account_id'] as num?)?.toInt(),
); );
Map<String, dynamic> _$$SnAuthFactorImplToJson(_$SnAuthFactorImpl instance) => Map<String, dynamic> _$SnAuthFactorToJson(_SnAuthFactor instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),

View File

@ -8,7 +8,7 @@ part 'chat.freezed.dart';
part 'chat.g.dart'; part 'chat.g.dart';
@freezed @freezed
class SnChannel with _$SnChannel { abstract class SnChannel with _$SnChannel {
const SnChannel._(); const SnChannel._();
const factory SnChannel({ const factory SnChannel({
@ -37,7 +37,7 @@ class SnChannel with _$SnChannel {
} }
@freezed @freezed
class SnChannelMember with _$SnChannelMember { abstract class SnChannelMember with _$SnChannelMember {
const SnChannelMember._(); const SnChannelMember._();
const factory SnChannelMember({ const factory SnChannelMember({
@ -61,7 +61,7 @@ class SnChannelMember with _$SnChannelMember {
} }
@freezed @freezed
class SnChatMessage with _$SnChatMessage { abstract class SnChatMessage with _$SnChatMessage {
const SnChatMessage._(); const SnChatMessage._();
const factory SnChatMessage({ const factory SnChatMessage({
@ -86,7 +86,7 @@ class SnChatMessage with _$SnChatMessage {
} }
@freezed @freezed
class SnChatMessagePreload with _$SnChatMessagePreload { abstract class SnChatMessagePreload with _$SnChatMessagePreload {
const SnChatMessagePreload._(); const SnChatMessagePreload._();
const factory SnChatMessagePreload({ const factory SnChatMessagePreload({
@ -99,7 +99,7 @@ class SnChatMessagePreload with _$SnChatMessagePreload {
} }
@freezed @freezed
class SnChatCall with _$SnChatCall { abstract class SnChatCall with _$SnChatCall {
const factory SnChatCall({ const factory SnChatCall({
required int id, required int id,
required DateTime createdAt, required DateTime createdAt,

File diff suppressed because it is too large Load Diff

View File

@ -6,8 +6,7 @@ part of 'chat.dart';
// JsonSerializableGenerator // JsonSerializableGenerator
// ************************************************************************** // **************************************************************************
_$SnChannelImpl _$$SnChannelImplFromJson(Map<String, dynamic> json) => _SnChannel _$SnChannelFromJson(Map<String, dynamic> json) => _SnChannel(
_$SnChannelImpl(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -31,7 +30,7 @@ _$SnChannelImpl _$$SnChannelImplFromJson(Map<String, dynamic> json) =>
isCommunity: json['is_community'] as bool, isCommunity: json['is_community'] as bool,
); );
Map<String, dynamic> _$$SnChannelImplToJson(_$SnChannelImpl instance) => Map<String, dynamic> _$SnChannelToJson(_SnChannel instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
@ -50,9 +49,8 @@ Map<String, dynamic> _$$SnChannelImplToJson(_$SnChannelImpl instance) =>
'is_community': instance.isCommunity, 'is_community': instance.isCommunity,
}; };
_$SnChannelMemberImpl _$$SnChannelMemberImplFromJson( _SnChannelMember _$SnChannelMemberFromJson(Map<String, dynamic> json) =>
Map<String, dynamic> json) => _SnChannelMember(
_$SnChannelMemberImpl(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -74,8 +72,7 @@ _$SnChannelMemberImpl _$$SnChannelMemberImplFromJson(
events: json['events'], events: json['events'],
); );
Map<String, dynamic> _$$SnChannelMemberImplToJson( Map<String, dynamic> _$SnChannelMemberToJson(_SnChannelMember instance) =>
_$SnChannelMemberImpl instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
@ -92,8 +89,8 @@ Map<String, dynamic> _$$SnChannelMemberImplToJson(
'events': instance.events, 'events': instance.events,
}; };
_$SnChatMessageImpl _$$SnChatMessageImplFromJson(Map<String, dynamic> json) => _SnChatMessage _$SnChatMessageFromJson(Map<String, dynamic> json) =>
_$SnChatMessageImpl( _SnChatMessage(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -115,7 +112,7 @@ _$SnChatMessageImpl _$$SnChatMessageImplFromJson(Map<String, dynamic> json) =>
json['preload'] as Map<String, dynamic>), json['preload'] as Map<String, dynamic>),
); );
Map<String, dynamic> _$$SnChatMessageImplToJson(_$SnChatMessageImpl instance) => Map<String, dynamic> _$SnChatMessageToJson(_SnChatMessage instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
@ -133,9 +130,9 @@ Map<String, dynamic> _$$SnChatMessageImplToJson(_$SnChatMessageImpl instance) =>
'preload': instance.preload?.toJson(), 'preload': instance.preload?.toJson(),
}; };
_$SnChatMessagePreloadImpl _$$SnChatMessagePreloadImplFromJson( _SnChatMessagePreload _$SnChatMessagePreloadFromJson(
Map<String, dynamic> json) => Map<String, dynamic> json) =>
_$SnChatMessagePreloadImpl( _SnChatMessagePreload(
attachments: (json['attachments'] as List<dynamic>?) attachments: (json['attachments'] as List<dynamic>?)
?.map((e) => e == null ?.map((e) => e == null
? null ? null
@ -146,15 +143,14 @@ _$SnChatMessagePreloadImpl _$$SnChatMessagePreloadImplFromJson(
: SnChatMessage.fromJson(json['quote_event'] as Map<String, dynamic>), : SnChatMessage.fromJson(json['quote_event'] as Map<String, dynamic>),
); );
Map<String, dynamic> _$$SnChatMessagePreloadImplToJson( Map<String, dynamic> _$SnChatMessagePreloadToJson(
_$SnChatMessagePreloadImpl instance) => _SnChatMessagePreload instance) =>
<String, dynamic>{ <String, dynamic>{
'attachments': instance.attachments?.map((e) => e?.toJson()).toList(), 'attachments': instance.attachments?.map((e) => e?.toJson()).toList(),
'quote_event': instance.quoteEvent?.toJson(), 'quote_event': instance.quoteEvent?.toJson(),
}; };
_$SnChatCallImpl _$$SnChatCallImplFromJson(Map<String, dynamic> json) => _SnChatCall _$SnChatCallFromJson(Map<String, dynamic> json) => _SnChatCall(
_$SnChatCallImpl(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -172,7 +168,7 @@ _$SnChatCallImpl _$$SnChatCallImplFromJson(Map<String, dynamic> json) =>
participants: json['participants'] as List<dynamic>? ?? const [], participants: json['participants'] as List<dynamic>? ?? const [],
); );
Map<String, dynamic> _$$SnChatCallImplToJson(_$SnChatCallImpl instance) => Map<String, dynamic> _$SnChatCallToJson(_SnChatCall instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),

View File

@ -14,7 +14,7 @@ final List<String> kCheckInResultTierSymbols = [
].map((e) => e.tr()).toList(); ].map((e) => e.tr()).toList();
@freezed @freezed
class SnCheckInRecord with _$SnCheckInRecord { abstract class SnCheckInRecord with _$SnCheckInRecord {
const SnCheckInRecord._(); const SnCheckInRecord._();
const factory SnCheckInRecord({ const factory SnCheckInRecord({

View File

@ -1,3 +1,4 @@
// dart format width=80
// coverage:ignore-file // coverage:ignore-file
// GENERATED CODE - DO NOT MODIFY BY HAND // GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint // ignore_for_file: type=lint
@ -9,128 +10,81 @@ part of 'check_in.dart';
// FreezedGenerator // FreezedGenerator
// ************************************************************************** // **************************************************************************
// dart format off
T _$identity<T>(T value) => value; T _$identity<T>(T value) => value;
final _privateConstructorUsedError = UnsupportedError(
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models');
SnCheckInRecord _$SnCheckInRecordFromJson(Map<String, dynamic> json) {
return _SnCheckInRecord.fromJson(json);
}
/// @nodoc /// @nodoc
mixin _$SnCheckInRecord { mixin _$SnCheckInRecord {
int get id => throw _privateConstructorUsedError; int get id;
DateTime get createdAt => throw _privateConstructorUsedError; DateTime get createdAt;
DateTime get updatedAt => throw _privateConstructorUsedError; DateTime get updatedAt;
DateTime? get deletedAt => throw _privateConstructorUsedError; DateTime? get deletedAt;
int get resultTier => throw _privateConstructorUsedError; int get resultTier;
int get resultExperience => throw _privateConstructorUsedError; int get resultExperience;
double get resultCoin => throw _privateConstructorUsedError; double get resultCoin;
List<int> get resultModifiers => throw _privateConstructorUsedError; List<int> get resultModifiers;
int get accountId => throw _privateConstructorUsedError; int get accountId;
/// Serializes this SnCheckInRecord to a JSON map.
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
/// Create a copy of SnCheckInRecord /// Create a copy of SnCheckInRecord
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false) @JsonKey(includeFromJson: false, includeToJson: false)
$SnCheckInRecordCopyWith<SnCheckInRecord> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $SnCheckInRecordCopyWith<$Res> {
factory $SnCheckInRecordCopyWith(
SnCheckInRecord value, $Res Function(SnCheckInRecord) then) =
_$SnCheckInRecordCopyWithImpl<$Res, SnCheckInRecord>;
@useResult
$Res call(
{int id,
DateTime createdAt,
DateTime updatedAt,
DateTime? deletedAt,
int resultTier,
int resultExperience,
double resultCoin,
List<int> resultModifiers,
int accountId});
}
/// @nodoc
class _$SnCheckInRecordCopyWithImpl<$Res, $Val extends SnCheckInRecord>
implements $SnCheckInRecordCopyWith<$Res> {
_$SnCheckInRecordCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of SnCheckInRecord
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
$SnCheckInRecordCopyWith<SnCheckInRecord> get copyWith =>
_$SnCheckInRecordCopyWithImpl<SnCheckInRecord>(
this as SnCheckInRecord, _$identity);
/// Serializes this SnCheckInRecord to a JSON map.
Map<String, dynamic> toJson();
@override @override
$Res call({ bool operator ==(Object other) {
Object? id = null, return identical(this, other) ||
Object? createdAt = null, (other.runtimeType == runtimeType &&
Object? updatedAt = null, other is SnCheckInRecord &&
Object? deletedAt = freezed, (identical(other.id, id) || other.id == id) &&
Object? resultTier = null, (identical(other.createdAt, createdAt) ||
Object? resultExperience = null, other.createdAt == createdAt) &&
Object? resultCoin = null, (identical(other.updatedAt, updatedAt) ||
Object? resultModifiers = null, other.updatedAt == updatedAt) &&
Object? accountId = null, (identical(other.deletedAt, deletedAt) ||
}) { other.deletedAt == deletedAt) &&
return _then(_value.copyWith( (identical(other.resultTier, resultTier) ||
id: null == id other.resultTier == resultTier) &&
? _value.id (identical(other.resultExperience, resultExperience) ||
: id // ignore: cast_nullable_to_non_nullable other.resultExperience == resultExperience) &&
as int, (identical(other.resultCoin, resultCoin) ||
createdAt: null == createdAt other.resultCoin == resultCoin) &&
? _value.createdAt const DeepCollectionEquality()
: createdAt // ignore: cast_nullable_to_non_nullable .equals(other.resultModifiers, resultModifiers) &&
as DateTime, (identical(other.accountId, accountId) ||
updatedAt: null == updatedAt other.accountId == accountId));
? _value.updatedAt }
: updatedAt // ignore: cast_nullable_to_non_nullable
as DateTime, @JsonKey(includeFromJson: false, includeToJson: false)
deletedAt: freezed == deletedAt @override
? _value.deletedAt int get hashCode => Object.hash(
: deletedAt // ignore: cast_nullable_to_non_nullable runtimeType,
as DateTime?, id,
resultTier: null == resultTier createdAt,
? _value.resultTier updatedAt,
: resultTier // ignore: cast_nullable_to_non_nullable deletedAt,
as int, resultTier,
resultExperience: null == resultExperience resultExperience,
? _value.resultExperience resultCoin,
: resultExperience // ignore: cast_nullable_to_non_nullable const DeepCollectionEquality().hash(resultModifiers),
as int, accountId);
resultCoin: null == resultCoin
? _value.resultCoin @override
: resultCoin // ignore: cast_nullable_to_non_nullable String toString() {
as double, return 'SnCheckInRecord(id: $id, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt, resultTier: $resultTier, resultExperience: $resultExperience, resultCoin: $resultCoin, resultModifiers: $resultModifiers, accountId: $accountId)';
resultModifiers: null == resultModifiers
? _value.resultModifiers
: resultModifiers // ignore: cast_nullable_to_non_nullable
as List<int>,
accountId: null == accountId
? _value.accountId
: accountId // ignore: cast_nullable_to_non_nullable
as int,
) as $Val);
} }
} }
/// @nodoc /// @nodoc
abstract class _$$SnCheckInRecordImplCopyWith<$Res> abstract mixin class $SnCheckInRecordCopyWith<$Res> {
implements $SnCheckInRecordCopyWith<$Res> { factory $SnCheckInRecordCopyWith(
factory _$$SnCheckInRecordImplCopyWith(_$SnCheckInRecordImpl value, SnCheckInRecord value, $Res Function(SnCheckInRecord) _then) =
$Res Function(_$SnCheckInRecordImpl) then) = _$SnCheckInRecordCopyWithImpl;
__$$SnCheckInRecordImplCopyWithImpl<$Res>;
@override
@useResult @useResult
$Res call( $Res call(
{int id, {int id,
@ -145,12 +99,12 @@ abstract class _$$SnCheckInRecordImplCopyWith<$Res>
} }
/// @nodoc /// @nodoc
class __$$SnCheckInRecordImplCopyWithImpl<$Res> class _$SnCheckInRecordCopyWithImpl<$Res>
extends _$SnCheckInRecordCopyWithImpl<$Res, _$SnCheckInRecordImpl> implements $SnCheckInRecordCopyWith<$Res> {
implements _$$SnCheckInRecordImplCopyWith<$Res> { _$SnCheckInRecordCopyWithImpl(this._self, this._then);
__$$SnCheckInRecordImplCopyWithImpl(
_$SnCheckInRecordImpl _value, $Res Function(_$SnCheckInRecordImpl) _then) final SnCheckInRecord _self;
: super(_value, _then); final $Res Function(SnCheckInRecord) _then;
/// Create a copy of SnCheckInRecord /// Create a copy of SnCheckInRecord
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@ -167,41 +121,41 @@ class __$$SnCheckInRecordImplCopyWithImpl<$Res>
Object? resultModifiers = null, Object? resultModifiers = null,
Object? accountId = null, Object? accountId = null,
}) { }) {
return _then(_$SnCheckInRecordImpl( return _then(_self.copyWith(
id: null == id id: null == id
? _value.id ? _self.id
: id // ignore: cast_nullable_to_non_nullable : id // ignore: cast_nullable_to_non_nullable
as int, as int,
createdAt: null == createdAt createdAt: null == createdAt
? _value.createdAt ? _self.createdAt
: createdAt // ignore: cast_nullable_to_non_nullable : createdAt // ignore: cast_nullable_to_non_nullable
as DateTime, as DateTime,
updatedAt: null == updatedAt updatedAt: null == updatedAt
? _value.updatedAt ? _self.updatedAt
: updatedAt // ignore: cast_nullable_to_non_nullable : updatedAt // ignore: cast_nullable_to_non_nullable
as DateTime, as DateTime,
deletedAt: freezed == deletedAt deletedAt: freezed == deletedAt
? _value.deletedAt ? _self.deletedAt
: deletedAt // ignore: cast_nullable_to_non_nullable : deletedAt // ignore: cast_nullable_to_non_nullable
as DateTime?, as DateTime?,
resultTier: null == resultTier resultTier: null == resultTier
? _value.resultTier ? _self.resultTier
: resultTier // ignore: cast_nullable_to_non_nullable : resultTier // ignore: cast_nullable_to_non_nullable
as int, as int,
resultExperience: null == resultExperience resultExperience: null == resultExperience
? _value.resultExperience ? _self.resultExperience
: resultExperience // ignore: cast_nullable_to_non_nullable : resultExperience // ignore: cast_nullable_to_non_nullable
as int, as int,
resultCoin: null == resultCoin resultCoin: null == resultCoin
? _value.resultCoin ? _self.resultCoin
: resultCoin // ignore: cast_nullable_to_non_nullable : resultCoin // ignore: cast_nullable_to_non_nullable
as double, as double,
resultModifiers: null == resultModifiers resultModifiers: null == resultModifiers
? _value._resultModifiers ? _self.resultModifiers
: resultModifiers // ignore: cast_nullable_to_non_nullable : resultModifiers // ignore: cast_nullable_to_non_nullable
as List<int>, as List<int>,
accountId: null == accountId accountId: null == accountId
? _value.accountId ? _self.accountId
: accountId // ignore: cast_nullable_to_non_nullable : accountId // ignore: cast_nullable_to_non_nullable
as int, as int,
)); ));
@ -210,8 +164,8 @@ class __$$SnCheckInRecordImplCopyWithImpl<$Res>
/// @nodoc /// @nodoc
@JsonSerializable() @JsonSerializable()
class _$SnCheckInRecordImpl extends _SnCheckInRecord { class _SnCheckInRecord extends SnCheckInRecord {
const _$SnCheckInRecordImpl( const _SnCheckInRecord(
{required this.id, {required this.id,
required this.createdAt, required this.createdAt,
required this.updatedAt, required this.updatedAt,
@ -223,9 +177,8 @@ class _$SnCheckInRecordImpl extends _SnCheckInRecord {
required this.accountId}) required this.accountId})
: _resultModifiers = resultModifiers, : _resultModifiers = resultModifiers,
super._(); super._();
factory _SnCheckInRecord.fromJson(Map<String, dynamic> json) =>
factory _$SnCheckInRecordImpl.fromJson(Map<String, dynamic> json) => _$SnCheckInRecordFromJson(json);
_$$SnCheckInRecordImplFromJson(json);
@override @override
final int id; final int id;
@ -252,16 +205,26 @@ class _$SnCheckInRecordImpl extends _SnCheckInRecord {
@override @override
final int accountId; final int accountId;
/// Create a copy of SnCheckInRecord
/// with the given fields replaced by the non-null parameter values.
@override @override
String toString() { @JsonKey(includeFromJson: false, includeToJson: false)
return 'SnCheckInRecord(id: $id, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt, resultTier: $resultTier, resultExperience: $resultExperience, resultCoin: $resultCoin, resultModifiers: $resultModifiers, accountId: $accountId)'; @pragma('vm:prefer-inline')
_$SnCheckInRecordCopyWith<_SnCheckInRecord> get copyWith =>
__$SnCheckInRecordCopyWithImpl<_SnCheckInRecord>(this, _$identity);
@override
Map<String, dynamic> toJson() {
return _$SnCheckInRecordToJson(
this,
);
} }
@override @override
bool operator ==(Object other) { bool operator ==(Object other) {
return identical(this, other) || return identical(this, other) ||
(other.runtimeType == runtimeType && (other.runtimeType == runtimeType &&
other is _$SnCheckInRecordImpl && other is _SnCheckInRecord &&
(identical(other.id, id) || other.id == id) && (identical(other.id, id) || other.id == id) &&
(identical(other.createdAt, createdAt) || (identical(other.createdAt, createdAt) ||
other.createdAt == createdAt) && other.createdAt == createdAt) &&
@ -295,62 +258,94 @@ class _$SnCheckInRecordImpl extends _SnCheckInRecord {
const DeepCollectionEquality().hash(_resultModifiers), const DeepCollectionEquality().hash(_resultModifiers),
accountId); accountId);
/// Create a copy of SnCheckInRecord
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override @override
@pragma('vm:prefer-inline') String toString() {
_$$SnCheckInRecordImplCopyWith<_$SnCheckInRecordImpl> get copyWith => return 'SnCheckInRecord(id: $id, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt, resultTier: $resultTier, resultExperience: $resultExperience, resultCoin: $resultCoin, resultModifiers: $resultModifiers, accountId: $accountId)';
__$$SnCheckInRecordImplCopyWithImpl<_$SnCheckInRecordImpl>(
this, _$identity);
@override
Map<String, dynamic> toJson() {
return _$$SnCheckInRecordImplToJson(
this,
);
} }
} }
abstract class _SnCheckInRecord extends SnCheckInRecord { /// @nodoc
const factory _SnCheckInRecord( abstract mixin class _$SnCheckInRecordCopyWith<$Res>
{required final int id, implements $SnCheckInRecordCopyWith<$Res> {
required final DateTime createdAt, factory _$SnCheckInRecordCopyWith(
required final DateTime updatedAt, _SnCheckInRecord value, $Res Function(_SnCheckInRecord) _then) =
required final DateTime? deletedAt, __$SnCheckInRecordCopyWithImpl;
required final int resultTier, @override
required final int resultExperience, @useResult
required final double resultCoin, $Res call(
required final List<int> resultModifiers, {int id,
required final int accountId}) = _$SnCheckInRecordImpl; DateTime createdAt,
const _SnCheckInRecord._() : super._(); DateTime updatedAt,
DateTime? deletedAt,
int resultTier,
int resultExperience,
double resultCoin,
List<int> resultModifiers,
int accountId});
}
factory _SnCheckInRecord.fromJson(Map<String, dynamic> json) = /// @nodoc
_$SnCheckInRecordImpl.fromJson; class __$SnCheckInRecordCopyWithImpl<$Res>
implements _$SnCheckInRecordCopyWith<$Res> {
__$SnCheckInRecordCopyWithImpl(this._self, this._then);
@override final _SnCheckInRecord _self;
int get id; final $Res Function(_SnCheckInRecord) _then;
@override
DateTime get createdAt;
@override
DateTime get updatedAt;
@override
DateTime? get deletedAt;
@override
int get resultTier;
@override
int get resultExperience;
@override
double get resultCoin;
@override
List<int> get resultModifiers;
@override
int get accountId;
/// Create a copy of SnCheckInRecord /// Create a copy of SnCheckInRecord
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@override @override
@JsonKey(includeFromJson: false, includeToJson: false) @pragma('vm:prefer-inline')
_$$SnCheckInRecordImplCopyWith<_$SnCheckInRecordImpl> get copyWith => $Res call({
throw _privateConstructorUsedError; Object? id = null,
Object? createdAt = null,
Object? updatedAt = null,
Object? deletedAt = freezed,
Object? resultTier = null,
Object? resultExperience = null,
Object? resultCoin = null,
Object? resultModifiers = null,
Object? accountId = null,
}) {
return _then(_SnCheckInRecord(
id: null == id
? _self.id
: id // ignore: cast_nullable_to_non_nullable
as int,
createdAt: null == createdAt
? _self.createdAt
: createdAt // ignore: cast_nullable_to_non_nullable
as DateTime,
updatedAt: null == updatedAt
? _self.updatedAt
: updatedAt // ignore: cast_nullable_to_non_nullable
as DateTime,
deletedAt: freezed == deletedAt
? _self.deletedAt
: deletedAt // ignore: cast_nullable_to_non_nullable
as DateTime?,
resultTier: null == resultTier
? _self.resultTier
: resultTier // ignore: cast_nullable_to_non_nullable
as int,
resultExperience: null == resultExperience
? _self.resultExperience
: resultExperience // ignore: cast_nullable_to_non_nullable
as int,
resultCoin: null == resultCoin
? _self.resultCoin
: resultCoin // ignore: cast_nullable_to_non_nullable
as double,
resultModifiers: null == resultModifiers
? _self._resultModifiers
: resultModifiers // ignore: cast_nullable_to_non_nullable
as List<int>,
accountId: null == accountId
? _self.accountId
: accountId // ignore: cast_nullable_to_non_nullable
as int,
));
}
} }
// dart format on

View File

@ -6,9 +6,8 @@ part of 'check_in.dart';
// JsonSerializableGenerator // JsonSerializableGenerator
// ************************************************************************** // **************************************************************************
_$SnCheckInRecordImpl _$$SnCheckInRecordImplFromJson( _SnCheckInRecord _$SnCheckInRecordFromJson(Map<String, dynamic> json) =>
Map<String, dynamic> json) => _SnCheckInRecord(
_$SnCheckInRecordImpl(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -24,8 +23,7 @@ _$SnCheckInRecordImpl _$$SnCheckInRecordImplFromJson(
accountId: (json['account_id'] as num).toInt(), accountId: (json['account_id'] as num).toInt(),
); );
Map<String, dynamic> _$$SnCheckInRecordImplToJson( Map<String, dynamic> _$SnCheckInRecordToJson(_SnCheckInRecord instance) =>
_$SnCheckInRecordImpl instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),

View File

@ -4,7 +4,7 @@ part 'link.g.dart';
part 'link.freezed.dart'; part 'link.freezed.dart';
@freezed @freezed
class SnLinkMeta with _$SnLinkMeta { abstract class SnLinkMeta with _$SnLinkMeta {
const SnLinkMeta._(); const SnLinkMeta._();
const factory SnLinkMeta({ const factory SnLinkMeta({

View File

@ -1,3 +1,4 @@
// dart format width=80
// coverage:ignore-file // coverage:ignore-file
// GENERATED CODE - DO NOT MODIFY BY HAND // GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint // ignore_for_file: type=lint
@ -9,332 +10,41 @@ part of 'link.dart';
// FreezedGenerator // FreezedGenerator
// ************************************************************************** // **************************************************************************
// dart format off
T _$identity<T>(T value) => value; T _$identity<T>(T value) => value;
final _privateConstructorUsedError = UnsupportedError(
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models');
SnLinkMeta _$SnLinkMetaFromJson(Map<String, dynamic> json) {
return _SnLinkMeta.fromJson(json);
}
/// @nodoc /// @nodoc
mixin _$SnLinkMeta { mixin _$SnLinkMeta {
int get id => throw _privateConstructorUsedError; int get id;
DateTime get createdAt => throw _privateConstructorUsedError; DateTime get createdAt;
DateTime get updatedAt => throw _privateConstructorUsedError; DateTime get updatedAt;
DateTime? get deletedAt => throw _privateConstructorUsedError; DateTime? get deletedAt;
String get entryId => throw _privateConstructorUsedError; String get entryId;
String? get icon => throw _privateConstructorUsedError; String? get icon;
String get url => throw _privateConstructorUsedError; String get url;
String? get title => throw _privateConstructorUsedError; String? get title;
String? get image => throw _privateConstructorUsedError; String? get image;
String? get video => throw _privateConstructorUsedError; String? get video;
String? get audio => throw _privateConstructorUsedError; String? get audio;
String? get description => throw _privateConstructorUsedError; String? get description;
String? get siteName => throw _privateConstructorUsedError; String? get siteName;
String? get type => throw _privateConstructorUsedError; String? get type;
/// Serializes this SnLinkMeta to a JSON map.
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
/// Create a copy of SnLinkMeta /// Create a copy of SnLinkMeta
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false) @JsonKey(includeFromJson: false, includeToJson: false)
@pragma('vm:prefer-inline')
$SnLinkMetaCopyWith<SnLinkMeta> get copyWith => $SnLinkMetaCopyWith<SnLinkMeta> get copyWith =>
throw _privateConstructorUsedError; _$SnLinkMetaCopyWithImpl<SnLinkMeta>(this as SnLinkMeta, _$identity);
}
/// @nodoc /// Serializes this SnLinkMeta to a JSON map.
abstract class $SnLinkMetaCopyWith<$Res> { Map<String, dynamic> toJson();
factory $SnLinkMetaCopyWith(
SnLinkMeta value, $Res Function(SnLinkMeta) then) =
_$SnLinkMetaCopyWithImpl<$Res, SnLinkMeta>;
@useResult
$Res call(
{int id,
DateTime createdAt,
DateTime updatedAt,
DateTime? deletedAt,
String entryId,
String? icon,
String url,
String? title,
String? image,
String? video,
String? audio,
String? description,
String? siteName,
String? type});
}
/// @nodoc
class _$SnLinkMetaCopyWithImpl<$Res, $Val extends SnLinkMeta>
implements $SnLinkMetaCopyWith<$Res> {
_$SnLinkMetaCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of SnLinkMeta
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
Object? id = null,
Object? createdAt = null,
Object? updatedAt = null,
Object? deletedAt = freezed,
Object? entryId = null,
Object? icon = freezed,
Object? url = null,
Object? title = freezed,
Object? image = freezed,
Object? video = freezed,
Object? audio = freezed,
Object? description = freezed,
Object? siteName = freezed,
Object? type = freezed,
}) {
return _then(_value.copyWith(
id: null == id
? _value.id
: id // ignore: cast_nullable_to_non_nullable
as int,
createdAt: null == createdAt
? _value.createdAt
: createdAt // ignore: cast_nullable_to_non_nullable
as DateTime,
updatedAt: null == updatedAt
? _value.updatedAt
: updatedAt // ignore: cast_nullable_to_non_nullable
as DateTime,
deletedAt: freezed == deletedAt
? _value.deletedAt
: deletedAt // ignore: cast_nullable_to_non_nullable
as DateTime?,
entryId: null == entryId
? _value.entryId
: entryId // ignore: cast_nullable_to_non_nullable
as String,
icon: freezed == icon
? _value.icon
: icon // ignore: cast_nullable_to_non_nullable
as String?,
url: null == url
? _value.url
: url // ignore: cast_nullable_to_non_nullable
as String,
title: freezed == title
? _value.title
: title // ignore: cast_nullable_to_non_nullable
as String?,
image: freezed == image
? _value.image
: image // ignore: cast_nullable_to_non_nullable
as String?,
video: freezed == video
? _value.video
: video // ignore: cast_nullable_to_non_nullable
as String?,
audio: freezed == audio
? _value.audio
: audio // ignore: cast_nullable_to_non_nullable
as String?,
description: freezed == description
? _value.description
: description // ignore: cast_nullable_to_non_nullable
as String?,
siteName: freezed == siteName
? _value.siteName
: siteName // ignore: cast_nullable_to_non_nullable
as String?,
type: freezed == type
? _value.type
: type // ignore: cast_nullable_to_non_nullable
as String?,
) as $Val);
}
}
/// @nodoc
abstract class _$$SnLinkMetaImplCopyWith<$Res>
implements $SnLinkMetaCopyWith<$Res> {
factory _$$SnLinkMetaImplCopyWith(
_$SnLinkMetaImpl value, $Res Function(_$SnLinkMetaImpl) then) =
__$$SnLinkMetaImplCopyWithImpl<$Res>;
@override
@useResult
$Res call(
{int id,
DateTime createdAt,
DateTime updatedAt,
DateTime? deletedAt,
String entryId,
String? icon,
String url,
String? title,
String? image,
String? video,
String? audio,
String? description,
String? siteName,
String? type});
}
/// @nodoc
class __$$SnLinkMetaImplCopyWithImpl<$Res>
extends _$SnLinkMetaCopyWithImpl<$Res, _$SnLinkMetaImpl>
implements _$$SnLinkMetaImplCopyWith<$Res> {
__$$SnLinkMetaImplCopyWithImpl(
_$SnLinkMetaImpl _value, $Res Function(_$SnLinkMetaImpl) _then)
: super(_value, _then);
/// Create a copy of SnLinkMeta
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
Object? id = null,
Object? createdAt = null,
Object? updatedAt = null,
Object? deletedAt = freezed,
Object? entryId = null,
Object? icon = freezed,
Object? url = null,
Object? title = freezed,
Object? image = freezed,
Object? video = freezed,
Object? audio = freezed,
Object? description = freezed,
Object? siteName = freezed,
Object? type = freezed,
}) {
return _then(_$SnLinkMetaImpl(
id: null == id
? _value.id
: id // ignore: cast_nullable_to_non_nullable
as int,
createdAt: null == createdAt
? _value.createdAt
: createdAt // ignore: cast_nullable_to_non_nullable
as DateTime,
updatedAt: null == updatedAt
? _value.updatedAt
: updatedAt // ignore: cast_nullable_to_non_nullable
as DateTime,
deletedAt: freezed == deletedAt
? _value.deletedAt
: deletedAt // ignore: cast_nullable_to_non_nullable
as DateTime?,
entryId: null == entryId
? _value.entryId
: entryId // ignore: cast_nullable_to_non_nullable
as String,
icon: freezed == icon
? _value.icon
: icon // ignore: cast_nullable_to_non_nullable
as String?,
url: null == url
? _value.url
: url // ignore: cast_nullable_to_non_nullable
as String,
title: freezed == title
? _value.title
: title // ignore: cast_nullable_to_non_nullable
as String?,
image: freezed == image
? _value.image
: image // ignore: cast_nullable_to_non_nullable
as String?,
video: freezed == video
? _value.video
: video // ignore: cast_nullable_to_non_nullable
as String?,
audio: freezed == audio
? _value.audio
: audio // ignore: cast_nullable_to_non_nullable
as String?,
description: freezed == description
? _value.description
: description // ignore: cast_nullable_to_non_nullable
as String?,
siteName: freezed == siteName
? _value.siteName
: siteName // ignore: cast_nullable_to_non_nullable
as String?,
type: freezed == type
? _value.type
: type // ignore: cast_nullable_to_non_nullable
as String?,
));
}
}
/// @nodoc
@JsonSerializable()
class _$SnLinkMetaImpl extends _SnLinkMeta {
const _$SnLinkMetaImpl(
{required this.id,
required this.createdAt,
required this.updatedAt,
required this.deletedAt,
required this.entryId,
required this.icon,
required this.url,
required this.title,
required this.image,
required this.video,
required this.audio,
required this.description,
required this.siteName,
required this.type})
: super._();
factory _$SnLinkMetaImpl.fromJson(Map<String, dynamic> json) =>
_$$SnLinkMetaImplFromJson(json);
@override
final int id;
@override
final DateTime createdAt;
@override
final DateTime updatedAt;
@override
final DateTime? deletedAt;
@override
final String entryId;
@override
final String? icon;
@override
final String url;
@override
final String? title;
@override
final String? image;
@override
final String? video;
@override
final String? audio;
@override
final String? description;
@override
final String? siteName;
@override
final String? type;
@override
String toString() {
return 'SnLinkMeta(id: $id, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt, entryId: $entryId, icon: $icon, url: $url, title: $title, image: $image, video: $video, audio: $audio, description: $description, siteName: $siteName, type: $type)';
}
@override @override
bool operator ==(Object other) { bool operator ==(Object other) {
return identical(this, other) || return identical(this, other) ||
(other.runtimeType == runtimeType && (other.runtimeType == runtimeType &&
other is _$SnLinkMetaImpl && other is SnLinkMeta &&
(identical(other.id, id) || other.id == id) && (identical(other.id, id) || other.id == id) &&
(identical(other.createdAt, createdAt) || (identical(other.createdAt, createdAt) ||
other.createdAt == createdAt) && other.createdAt == createdAt) &&
@ -375,76 +85,351 @@ class _$SnLinkMetaImpl extends _SnLinkMeta {
siteName, siteName,
type); type);
/// Create a copy of SnLinkMeta
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override @override
@pragma('vm:prefer-inline') String toString() {
_$$SnLinkMetaImplCopyWith<_$SnLinkMetaImpl> get copyWith => return 'SnLinkMeta(id: $id, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt, entryId: $entryId, icon: $icon, url: $url, title: $title, image: $image, video: $video, audio: $audio, description: $description, siteName: $siteName, type: $type)';
__$$SnLinkMetaImplCopyWithImpl<_$SnLinkMetaImpl>(this, _$identity);
@override
Map<String, dynamic> toJson() {
return _$$SnLinkMetaImplToJson(
this,
);
} }
} }
abstract class _SnLinkMeta extends SnLinkMeta { /// @nodoc
const factory _SnLinkMeta( abstract mixin class $SnLinkMetaCopyWith<$Res> {
{required final int id, factory $SnLinkMetaCopyWith(
required final DateTime createdAt, SnLinkMeta value, $Res Function(SnLinkMeta) _then) =
required final DateTime updatedAt, _$SnLinkMetaCopyWithImpl;
required final DateTime? deletedAt, @useResult
required final String entryId, $Res call(
required final String? icon, {int id,
required final String url, DateTime createdAt,
required final String? title, DateTime updatedAt,
required final String? image, DateTime? deletedAt,
required final String? video, String entryId,
required final String? audio, String? icon,
required final String? description, String url,
required final String? siteName, String? title,
required final String? type}) = _$SnLinkMetaImpl; String? image,
const _SnLinkMeta._() : super._(); String? video,
String? audio,
String? description,
String? siteName,
String? type});
}
factory _SnLinkMeta.fromJson(Map<String, dynamic> json) = /// @nodoc
_$SnLinkMetaImpl.fromJson; class _$SnLinkMetaCopyWithImpl<$Res> implements $SnLinkMetaCopyWith<$Res> {
_$SnLinkMetaCopyWithImpl(this._self, this._then);
final SnLinkMeta _self;
final $Res Function(SnLinkMeta) _then;
/// Create a copy of SnLinkMeta
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline')
@override
$Res call({
Object? id = null,
Object? createdAt = null,
Object? updatedAt = null,
Object? deletedAt = freezed,
Object? entryId = null,
Object? icon = freezed,
Object? url = null,
Object? title = freezed,
Object? image = freezed,
Object? video = freezed,
Object? audio = freezed,
Object? description = freezed,
Object? siteName = freezed,
Object? type = freezed,
}) {
return _then(_self.copyWith(
id: null == id
? _self.id
: id // ignore: cast_nullable_to_non_nullable
as int,
createdAt: null == createdAt
? _self.createdAt
: createdAt // ignore: cast_nullable_to_non_nullable
as DateTime,
updatedAt: null == updatedAt
? _self.updatedAt
: updatedAt // ignore: cast_nullable_to_non_nullable
as DateTime,
deletedAt: freezed == deletedAt
? _self.deletedAt
: deletedAt // ignore: cast_nullable_to_non_nullable
as DateTime?,
entryId: null == entryId
? _self.entryId
: entryId // ignore: cast_nullable_to_non_nullable
as String,
icon: freezed == icon
? _self.icon
: icon // ignore: cast_nullable_to_non_nullable
as String?,
url: null == url
? _self.url
: url // ignore: cast_nullable_to_non_nullable
as String,
title: freezed == title
? _self.title
: title // ignore: cast_nullable_to_non_nullable
as String?,
image: freezed == image
? _self.image
: image // ignore: cast_nullable_to_non_nullable
as String?,
video: freezed == video
? _self.video
: video // ignore: cast_nullable_to_non_nullable
as String?,
audio: freezed == audio
? _self.audio
: audio // ignore: cast_nullable_to_non_nullable
as String?,
description: freezed == description
? _self.description
: description // ignore: cast_nullable_to_non_nullable
as String?,
siteName: freezed == siteName
? _self.siteName
: siteName // ignore: cast_nullable_to_non_nullable
as String?,
type: freezed == type
? _self.type
: type // ignore: cast_nullable_to_non_nullable
as String?,
));
}
}
/// @nodoc
@JsonSerializable()
class _SnLinkMeta extends SnLinkMeta {
const _SnLinkMeta(
{required this.id,
required this.createdAt,
required this.updatedAt,
required this.deletedAt,
required this.entryId,
required this.icon,
required this.url,
required this.title,
required this.image,
required this.video,
required this.audio,
required this.description,
required this.siteName,
required this.type})
: super._();
factory _SnLinkMeta.fromJson(Map<String, dynamic> json) =>
_$SnLinkMetaFromJson(json);
@override @override
int get id; final int id;
@override @override
DateTime get createdAt; final DateTime createdAt;
@override @override
DateTime get updatedAt; final DateTime updatedAt;
@override @override
DateTime? get deletedAt; final DateTime? deletedAt;
@override @override
String get entryId; final String entryId;
@override @override
String? get icon; final String? icon;
@override @override
String get url; final String url;
@override @override
String? get title; final String? title;
@override @override
String? get image; final String? image;
@override @override
String? get video; final String? video;
@override @override
String? get audio; final String? audio;
@override @override
String? get description; final String? description;
@override @override
String? get siteName; final String? siteName;
@override @override
String? get type; final String? type;
/// Create a copy of SnLinkMeta /// Create a copy of SnLinkMeta
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@override @override
@JsonKey(includeFromJson: false, includeToJson: false) @JsonKey(includeFromJson: false, includeToJson: false)
_$$SnLinkMetaImplCopyWith<_$SnLinkMetaImpl> get copyWith => @pragma('vm:prefer-inline')
throw _privateConstructorUsedError; _$SnLinkMetaCopyWith<_SnLinkMeta> get copyWith =>
__$SnLinkMetaCopyWithImpl<_SnLinkMeta>(this, _$identity);
@override
Map<String, dynamic> toJson() {
return _$SnLinkMetaToJson(
this,
);
}
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _SnLinkMeta &&
(identical(other.id, id) || other.id == id) &&
(identical(other.createdAt, createdAt) ||
other.createdAt == createdAt) &&
(identical(other.updatedAt, updatedAt) ||
other.updatedAt == updatedAt) &&
(identical(other.deletedAt, deletedAt) ||
other.deletedAt == deletedAt) &&
(identical(other.entryId, entryId) || other.entryId == entryId) &&
(identical(other.icon, icon) || other.icon == icon) &&
(identical(other.url, url) || other.url == url) &&
(identical(other.title, title) || other.title == title) &&
(identical(other.image, image) || other.image == image) &&
(identical(other.video, video) || other.video == video) &&
(identical(other.audio, audio) || other.audio == audio) &&
(identical(other.description, description) ||
other.description == description) &&
(identical(other.siteName, siteName) ||
other.siteName == siteName) &&
(identical(other.type, type) || other.type == type));
}
@JsonKey(includeFromJson: false, includeToJson: false)
@override
int get hashCode => Object.hash(
runtimeType,
id,
createdAt,
updatedAt,
deletedAt,
entryId,
icon,
url,
title,
image,
video,
audio,
description,
siteName,
type);
@override
String toString() {
return 'SnLinkMeta(id: $id, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt, entryId: $entryId, icon: $icon, url: $url, title: $title, image: $image, video: $video, audio: $audio, description: $description, siteName: $siteName, type: $type)';
}
} }
/// @nodoc
abstract mixin class _$SnLinkMetaCopyWith<$Res>
implements $SnLinkMetaCopyWith<$Res> {
factory _$SnLinkMetaCopyWith(
_SnLinkMeta value, $Res Function(_SnLinkMeta) _then) =
__$SnLinkMetaCopyWithImpl;
@override
@useResult
$Res call(
{int id,
DateTime createdAt,
DateTime updatedAt,
DateTime? deletedAt,
String entryId,
String? icon,
String url,
String? title,
String? image,
String? video,
String? audio,
String? description,
String? siteName,
String? type});
}
/// @nodoc
class __$SnLinkMetaCopyWithImpl<$Res> implements _$SnLinkMetaCopyWith<$Res> {
__$SnLinkMetaCopyWithImpl(this._self, this._then);
final _SnLinkMeta _self;
final $Res Function(_SnLinkMeta) _then;
/// Create a copy of SnLinkMeta
/// with the given fields replaced by the non-null parameter values.
@override
@pragma('vm:prefer-inline')
$Res call({
Object? id = null,
Object? createdAt = null,
Object? updatedAt = null,
Object? deletedAt = freezed,
Object? entryId = null,
Object? icon = freezed,
Object? url = null,
Object? title = freezed,
Object? image = freezed,
Object? video = freezed,
Object? audio = freezed,
Object? description = freezed,
Object? siteName = freezed,
Object? type = freezed,
}) {
return _then(_SnLinkMeta(
id: null == id
? _self.id
: id // ignore: cast_nullable_to_non_nullable
as int,
createdAt: null == createdAt
? _self.createdAt
: createdAt // ignore: cast_nullable_to_non_nullable
as DateTime,
updatedAt: null == updatedAt
? _self.updatedAt
: updatedAt // ignore: cast_nullable_to_non_nullable
as DateTime,
deletedAt: freezed == deletedAt
? _self.deletedAt
: deletedAt // ignore: cast_nullable_to_non_nullable
as DateTime?,
entryId: null == entryId
? _self.entryId
: entryId // ignore: cast_nullable_to_non_nullable
as String,
icon: freezed == icon
? _self.icon
: icon // ignore: cast_nullable_to_non_nullable
as String?,
url: null == url
? _self.url
: url // ignore: cast_nullable_to_non_nullable
as String,
title: freezed == title
? _self.title
: title // ignore: cast_nullable_to_non_nullable
as String?,
image: freezed == image
? _self.image
: image // ignore: cast_nullable_to_non_nullable
as String?,
video: freezed == video
? _self.video
: video // ignore: cast_nullable_to_non_nullable
as String?,
audio: freezed == audio
? _self.audio
: audio // ignore: cast_nullable_to_non_nullable
as String?,
description: freezed == description
? _self.description
: description // ignore: cast_nullable_to_non_nullable
as String?,
siteName: freezed == siteName
? _self.siteName
: siteName // ignore: cast_nullable_to_non_nullable
as String?,
type: freezed == type
? _self.type
: type // ignore: cast_nullable_to_non_nullable
as String?,
));
}
}
// dart format on

View File

@ -6,8 +6,7 @@ part of 'link.dart';
// JsonSerializableGenerator // JsonSerializableGenerator
// ************************************************************************** // **************************************************************************
_$SnLinkMetaImpl _$$SnLinkMetaImplFromJson(Map<String, dynamic> json) => _SnLinkMeta _$SnLinkMetaFromJson(Map<String, dynamic> json) => _SnLinkMeta(
_$SnLinkMetaImpl(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -26,7 +25,7 @@ _$SnLinkMetaImpl _$$SnLinkMetaImplFromJson(Map<String, dynamic> json) =>
type: json['type'] as String?, type: json['type'] as String?,
); );
Map<String, dynamic> _$$SnLinkMetaImplToJson(_$SnLinkMetaImpl instance) => Map<String, dynamic> _$SnLinkMetaToJson(_SnLinkMeta instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),

View File

@ -4,7 +4,7 @@ part 'news.freezed.dart';
part 'news.g.dart'; part 'news.g.dart';
@freezed @freezed
class SnNewsSource with _$SnNewsSource { abstract class SnNewsSource with _$SnNewsSource {
const factory SnNewsSource({ const factory SnNewsSource({
required String id, required String id,
required String label, required String label,
@ -18,7 +18,7 @@ class SnNewsSource with _$SnNewsSource {
} }
@freezed @freezed
class SnNewsArticle with _$SnNewsArticle { abstract class SnNewsArticle with _$SnNewsArticle {
const factory SnNewsArticle({ const factory SnNewsArticle({
required int id, required int id,
required DateTime createdAt, required DateTime createdAt,

File diff suppressed because it is too large Load Diff

View File

@ -6,8 +6,8 @@ part of 'news.dart';
// JsonSerializableGenerator // JsonSerializableGenerator
// ************************************************************************** // **************************************************************************
_$SnNewsSourceImpl _$$SnNewsSourceImplFromJson(Map<String, dynamic> json) => _SnNewsSource _$SnNewsSourceFromJson(Map<String, dynamic> json) =>
_$SnNewsSourceImpl( _SnNewsSource(
id: json['id'] as String, id: json['id'] as String,
label: json['label'] as String, label: json['label'] as String,
type: json['type'] as String, type: json['type'] as String,
@ -16,7 +16,7 @@ _$SnNewsSourceImpl _$$SnNewsSourceImplFromJson(Map<String, dynamic> json) =>
enabled: json['enabled'] as bool, enabled: json['enabled'] as bool,
); );
Map<String, dynamic> _$$SnNewsSourceImplToJson(_$SnNewsSourceImpl instance) => Map<String, dynamic> _$SnNewsSourceToJson(_SnNewsSource instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'label': instance.label, 'label': instance.label,
@ -26,8 +26,8 @@ Map<String, dynamic> _$$SnNewsSourceImplToJson(_$SnNewsSourceImpl instance) =>
'enabled': instance.enabled, 'enabled': instance.enabled,
}; };
_$SnNewsArticleImpl _$$SnNewsArticleImplFromJson(Map<String, dynamic> json) => _SnNewsArticle _$SnNewsArticleFromJson(Map<String, dynamic> json) =>
_$SnNewsArticleImpl( _SnNewsArticle(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -44,7 +44,7 @@ _$SnNewsArticleImpl _$$SnNewsArticleImplFromJson(Map<String, dynamic> json) =>
: DateTime.parse(json['published_at'] as String), : DateTime.parse(json['published_at'] as String),
); );
Map<String, dynamic> _$$SnNewsArticleImplToJson(_$SnNewsArticleImpl instance) => Map<String, dynamic> _$SnNewsArticleToJson(_SnNewsArticle instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),

View File

@ -4,7 +4,7 @@ part 'notification.freezed.dart';
part 'notification.g.dart'; part 'notification.g.dart';
@freezed @freezed
class SnNotification with _$SnNotification { abstract class SnNotification with _$SnNotification {
const factory SnNotification({ const factory SnNotification({
required int id, required int id,
required DateTime createdAt, required DateTime createdAt,

View File

@ -1,3 +1,4 @@
// dart format width=80
// coverage:ignore-file // coverage:ignore-file
// GENERATED CODE - DO NOT MODIFY BY HAND // GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint // ignore_for_file: type=lint
@ -9,156 +10,92 @@ part of 'notification.dart';
// FreezedGenerator // FreezedGenerator
// ************************************************************************** // **************************************************************************
// dart format off
T _$identity<T>(T value) => value; T _$identity<T>(T value) => value;
final _privateConstructorUsedError = UnsupportedError(
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models');
SnNotification _$SnNotificationFromJson(Map<String, dynamic> json) {
return _SnNotification.fromJson(json);
}
/// @nodoc /// @nodoc
mixin _$SnNotification { mixin _$SnNotification {
int get id => throw _privateConstructorUsedError; int get id;
DateTime get createdAt => throw _privateConstructorUsedError; DateTime get createdAt;
DateTime get updatedAt => throw _privateConstructorUsedError; DateTime get updatedAt;
DateTime? get deletedAt => throw _privateConstructorUsedError; DateTime? get deletedAt;
String get topic => throw _privateConstructorUsedError; String get topic;
String get title => throw _privateConstructorUsedError; String get title;
String? get subtitle => throw _privateConstructorUsedError; String? get subtitle;
String get body => throw _privateConstructorUsedError; String get body;
Map<String, dynamic> get metadata => throw _privateConstructorUsedError; Map<String, dynamic> get metadata;
int get priority => throw _privateConstructorUsedError; int get priority;
int? get senderId => throw _privateConstructorUsedError; int? get senderId;
int get accountId => throw _privateConstructorUsedError; int get accountId;
DateTime? get readAt => throw _privateConstructorUsedError; DateTime? get readAt;
/// Serializes this SnNotification to a JSON map.
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
/// Create a copy of SnNotification /// Create a copy of SnNotification
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false) @JsonKey(includeFromJson: false, includeToJson: false)
$SnNotificationCopyWith<SnNotification> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $SnNotificationCopyWith<$Res> {
factory $SnNotificationCopyWith(
SnNotification value, $Res Function(SnNotification) then) =
_$SnNotificationCopyWithImpl<$Res, SnNotification>;
@useResult
$Res call(
{int id,
DateTime createdAt,
DateTime updatedAt,
DateTime? deletedAt,
String topic,
String title,
String? subtitle,
String body,
Map<String, dynamic> metadata,
int priority,
int? senderId,
int accountId,
DateTime? readAt});
}
/// @nodoc
class _$SnNotificationCopyWithImpl<$Res, $Val extends SnNotification>
implements $SnNotificationCopyWith<$Res> {
_$SnNotificationCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of SnNotification
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
$SnNotificationCopyWith<SnNotification> get copyWith =>
_$SnNotificationCopyWithImpl<SnNotification>(
this as SnNotification, _$identity);
/// Serializes this SnNotification to a JSON map.
Map<String, dynamic> toJson();
@override @override
$Res call({ bool operator ==(Object other) {
Object? id = null, return identical(this, other) ||
Object? createdAt = null, (other.runtimeType == runtimeType &&
Object? updatedAt = null, other is SnNotification &&
Object? deletedAt = freezed, (identical(other.id, id) || other.id == id) &&
Object? topic = null, (identical(other.createdAt, createdAt) ||
Object? title = null, other.createdAt == createdAt) &&
Object? subtitle = freezed, (identical(other.updatedAt, updatedAt) ||
Object? body = null, other.updatedAt == updatedAt) &&
Object? metadata = null, (identical(other.deletedAt, deletedAt) ||
Object? priority = null, other.deletedAt == deletedAt) &&
Object? senderId = freezed, (identical(other.topic, topic) || other.topic == topic) &&
Object? accountId = null, (identical(other.title, title) || other.title == title) &&
Object? readAt = freezed, (identical(other.subtitle, subtitle) ||
}) { other.subtitle == subtitle) &&
return _then(_value.copyWith( (identical(other.body, body) || other.body == body) &&
id: null == id const DeepCollectionEquality().equals(other.metadata, metadata) &&
? _value.id (identical(other.priority, priority) ||
: id // ignore: cast_nullable_to_non_nullable other.priority == priority) &&
as int, (identical(other.senderId, senderId) ||
createdAt: null == createdAt other.senderId == senderId) &&
? _value.createdAt (identical(other.accountId, accountId) ||
: createdAt // ignore: cast_nullable_to_non_nullable other.accountId == accountId) &&
as DateTime, (identical(other.readAt, readAt) || other.readAt == readAt));
updatedAt: null == updatedAt }
? _value.updatedAt
: updatedAt // ignore: cast_nullable_to_non_nullable @JsonKey(includeFromJson: false, includeToJson: false)
as DateTime, @override
deletedAt: freezed == deletedAt int get hashCode => Object.hash(
? _value.deletedAt runtimeType,
: deletedAt // ignore: cast_nullable_to_non_nullable id,
as DateTime?, createdAt,
topic: null == topic updatedAt,
? _value.topic deletedAt,
: topic // ignore: cast_nullable_to_non_nullable topic,
as String, title,
title: null == title subtitle,
? _value.title body,
: title // ignore: cast_nullable_to_non_nullable const DeepCollectionEquality().hash(metadata),
as String, priority,
subtitle: freezed == subtitle senderId,
? _value.subtitle accountId,
: subtitle // ignore: cast_nullable_to_non_nullable readAt);
as String?,
body: null == body @override
? _value.body String toString() {
: body // ignore: cast_nullable_to_non_nullable return 'SnNotification(id: $id, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt, topic: $topic, title: $title, subtitle: $subtitle, body: $body, metadata: $metadata, priority: $priority, senderId: $senderId, accountId: $accountId, readAt: $readAt)';
as String,
metadata: null == metadata
? _value.metadata
: metadata // ignore: cast_nullable_to_non_nullable
as Map<String, dynamic>,
priority: null == priority
? _value.priority
: priority // ignore: cast_nullable_to_non_nullable
as int,
senderId: freezed == senderId
? _value.senderId
: senderId // ignore: cast_nullable_to_non_nullable
as int?,
accountId: null == accountId
? _value.accountId
: accountId // ignore: cast_nullable_to_non_nullable
as int,
readAt: freezed == readAt
? _value.readAt
: readAt // ignore: cast_nullable_to_non_nullable
as DateTime?,
) as $Val);
} }
} }
/// @nodoc /// @nodoc
abstract class _$$SnNotificationImplCopyWith<$Res> abstract mixin class $SnNotificationCopyWith<$Res> {
implements $SnNotificationCopyWith<$Res> { factory $SnNotificationCopyWith(
factory _$$SnNotificationImplCopyWith(_$SnNotificationImpl value, SnNotification value, $Res Function(SnNotification) _then) =
$Res Function(_$SnNotificationImpl) then) = _$SnNotificationCopyWithImpl;
__$$SnNotificationImplCopyWithImpl<$Res>;
@override
@useResult @useResult
$Res call( $Res call(
{int id, {int id,
@ -177,12 +114,12 @@ abstract class _$$SnNotificationImplCopyWith<$Res>
} }
/// @nodoc /// @nodoc
class __$$SnNotificationImplCopyWithImpl<$Res> class _$SnNotificationCopyWithImpl<$Res>
extends _$SnNotificationCopyWithImpl<$Res, _$SnNotificationImpl> implements $SnNotificationCopyWith<$Res> {
implements _$$SnNotificationImplCopyWith<$Res> { _$SnNotificationCopyWithImpl(this._self, this._then);
__$$SnNotificationImplCopyWithImpl(
_$SnNotificationImpl _value, $Res Function(_$SnNotificationImpl) _then) final SnNotification _self;
: super(_value, _then); final $Res Function(SnNotification) _then;
/// Create a copy of SnNotification /// Create a copy of SnNotification
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@ -203,57 +140,57 @@ class __$$SnNotificationImplCopyWithImpl<$Res>
Object? accountId = null, Object? accountId = null,
Object? readAt = freezed, Object? readAt = freezed,
}) { }) {
return _then(_$SnNotificationImpl( return _then(_self.copyWith(
id: null == id id: null == id
? _value.id ? _self.id
: id // ignore: cast_nullable_to_non_nullable : id // ignore: cast_nullable_to_non_nullable
as int, as int,
createdAt: null == createdAt createdAt: null == createdAt
? _value.createdAt ? _self.createdAt
: createdAt // ignore: cast_nullable_to_non_nullable : createdAt // ignore: cast_nullable_to_non_nullable
as DateTime, as DateTime,
updatedAt: null == updatedAt updatedAt: null == updatedAt
? _value.updatedAt ? _self.updatedAt
: updatedAt // ignore: cast_nullable_to_non_nullable : updatedAt // ignore: cast_nullable_to_non_nullable
as DateTime, as DateTime,
deletedAt: freezed == deletedAt deletedAt: freezed == deletedAt
? _value.deletedAt ? _self.deletedAt
: deletedAt // ignore: cast_nullable_to_non_nullable : deletedAt // ignore: cast_nullable_to_non_nullable
as DateTime?, as DateTime?,
topic: null == topic topic: null == topic
? _value.topic ? _self.topic
: topic // ignore: cast_nullable_to_non_nullable : topic // ignore: cast_nullable_to_non_nullable
as String, as String,
title: null == title title: null == title
? _value.title ? _self.title
: title // ignore: cast_nullable_to_non_nullable : title // ignore: cast_nullable_to_non_nullable
as String, as String,
subtitle: freezed == subtitle subtitle: freezed == subtitle
? _value.subtitle ? _self.subtitle
: subtitle // ignore: cast_nullable_to_non_nullable : subtitle // ignore: cast_nullable_to_non_nullable
as String?, as String?,
body: null == body body: null == body
? _value.body ? _self.body
: body // ignore: cast_nullable_to_non_nullable : body // ignore: cast_nullable_to_non_nullable
as String, as String,
metadata: null == metadata metadata: null == metadata
? _value._metadata ? _self.metadata
: metadata // ignore: cast_nullable_to_non_nullable : metadata // ignore: cast_nullable_to_non_nullable
as Map<String, dynamic>, as Map<String, dynamic>,
priority: null == priority priority: null == priority
? _value.priority ? _self.priority
: priority // ignore: cast_nullable_to_non_nullable : priority // ignore: cast_nullable_to_non_nullable
as int, as int,
senderId: freezed == senderId senderId: freezed == senderId
? _value.senderId ? _self.senderId
: senderId // ignore: cast_nullable_to_non_nullable : senderId // ignore: cast_nullable_to_non_nullable
as int?, as int?,
accountId: null == accountId accountId: null == accountId
? _value.accountId ? _self.accountId
: accountId // ignore: cast_nullable_to_non_nullable : accountId // ignore: cast_nullable_to_non_nullable
as int, as int,
readAt: freezed == readAt readAt: freezed == readAt
? _value.readAt ? _self.readAt
: readAt // ignore: cast_nullable_to_non_nullable : readAt // ignore: cast_nullable_to_non_nullable
as DateTime?, as DateTime?,
)); ));
@ -262,8 +199,8 @@ class __$$SnNotificationImplCopyWithImpl<$Res>
/// @nodoc /// @nodoc
@JsonSerializable() @JsonSerializable()
class _$SnNotificationImpl implements _SnNotification { class _SnNotification implements SnNotification {
const _$SnNotificationImpl( const _SnNotification(
{required this.id, {required this.id,
required this.createdAt, required this.createdAt,
required this.updatedAt, required this.updatedAt,
@ -278,9 +215,8 @@ class _$SnNotificationImpl implements _SnNotification {
required this.accountId, required this.accountId,
required this.readAt}) required this.readAt})
: _metadata = metadata; : _metadata = metadata;
factory _SnNotification.fromJson(Map<String, dynamic> json) =>
factory _$SnNotificationImpl.fromJson(Map<String, dynamic> json) => _$SnNotificationFromJson(json);
_$$SnNotificationImplFromJson(json);
@override @override
final int id; final int id;
@ -316,16 +252,26 @@ class _$SnNotificationImpl implements _SnNotification {
@override @override
final DateTime? readAt; final DateTime? readAt;
/// Create a copy of SnNotification
/// with the given fields replaced by the non-null parameter values.
@override @override
String toString() { @JsonKey(includeFromJson: false, includeToJson: false)
return 'SnNotification(id: $id, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt, topic: $topic, title: $title, subtitle: $subtitle, body: $body, metadata: $metadata, priority: $priority, senderId: $senderId, accountId: $accountId, readAt: $readAt)'; @pragma('vm:prefer-inline')
_$SnNotificationCopyWith<_SnNotification> get copyWith =>
__$SnNotificationCopyWithImpl<_SnNotification>(this, _$identity);
@override
Map<String, dynamic> toJson() {
return _$SnNotificationToJson(
this,
);
} }
@override @override
bool operator ==(Object other) { bool operator ==(Object other) {
return identical(this, other) || return identical(this, other) ||
(other.runtimeType == runtimeType && (other.runtimeType == runtimeType &&
other is _$SnNotificationImpl && other is _SnNotification &&
(identical(other.id, id) || other.id == id) && (identical(other.id, id) || other.id == id) &&
(identical(other.createdAt, createdAt) || (identical(other.createdAt, createdAt) ||
other.createdAt == createdAt) && other.createdAt == createdAt) &&
@ -366,73 +312,118 @@ class _$SnNotificationImpl implements _SnNotification {
accountId, accountId,
readAt); readAt);
/// Create a copy of SnNotification
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override @override
@pragma('vm:prefer-inline') String toString() {
_$$SnNotificationImplCopyWith<_$SnNotificationImpl> get copyWith => return 'SnNotification(id: $id, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt, topic: $topic, title: $title, subtitle: $subtitle, body: $body, metadata: $metadata, priority: $priority, senderId: $senderId, accountId: $accountId, readAt: $readAt)';
__$$SnNotificationImplCopyWithImpl<_$SnNotificationImpl>(
this, _$identity);
@override
Map<String, dynamic> toJson() {
return _$$SnNotificationImplToJson(
this,
);
} }
} }
abstract class _SnNotification implements SnNotification { /// @nodoc
const factory _SnNotification( abstract mixin class _$SnNotificationCopyWith<$Res>
{required final int id, implements $SnNotificationCopyWith<$Res> {
required final DateTime createdAt, factory _$SnNotificationCopyWith(
required final DateTime updatedAt, _SnNotification value, $Res Function(_SnNotification) _then) =
required final DateTime? deletedAt, __$SnNotificationCopyWithImpl;
required final String topic, @override
required final String title, @useResult
required final String? subtitle, $Res call(
required final String body, {int id,
final Map<String, dynamic> metadata, DateTime createdAt,
required final int priority, DateTime updatedAt,
required final int? senderId, DateTime? deletedAt,
required final int accountId, String topic,
required final DateTime? readAt}) = _$SnNotificationImpl; String title,
String? subtitle,
String body,
Map<String, dynamic> metadata,
int priority,
int? senderId,
int accountId,
DateTime? readAt});
}
factory _SnNotification.fromJson(Map<String, dynamic> json) = /// @nodoc
_$SnNotificationImpl.fromJson; class __$SnNotificationCopyWithImpl<$Res>
implements _$SnNotificationCopyWith<$Res> {
__$SnNotificationCopyWithImpl(this._self, this._then);
@override final _SnNotification _self;
int get id; final $Res Function(_SnNotification) _then;
@override
DateTime get createdAt;
@override
DateTime get updatedAt;
@override
DateTime? get deletedAt;
@override
String get topic;
@override
String get title;
@override
String? get subtitle;
@override
String get body;
@override
Map<String, dynamic> get metadata;
@override
int get priority;
@override
int? get senderId;
@override
int get accountId;
@override
DateTime? get readAt;
/// Create a copy of SnNotification /// Create a copy of SnNotification
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@override @override
@JsonKey(includeFromJson: false, includeToJson: false) @pragma('vm:prefer-inline')
_$$SnNotificationImplCopyWith<_$SnNotificationImpl> get copyWith => $Res call({
throw _privateConstructorUsedError; Object? id = null,
Object? createdAt = null,
Object? updatedAt = null,
Object? deletedAt = freezed,
Object? topic = null,
Object? title = null,
Object? subtitle = freezed,
Object? body = null,
Object? metadata = null,
Object? priority = null,
Object? senderId = freezed,
Object? accountId = null,
Object? readAt = freezed,
}) {
return _then(_SnNotification(
id: null == id
? _self.id
: id // ignore: cast_nullable_to_non_nullable
as int,
createdAt: null == createdAt
? _self.createdAt
: createdAt // ignore: cast_nullable_to_non_nullable
as DateTime,
updatedAt: null == updatedAt
? _self.updatedAt
: updatedAt // ignore: cast_nullable_to_non_nullable
as DateTime,
deletedAt: freezed == deletedAt
? _self.deletedAt
: deletedAt // ignore: cast_nullable_to_non_nullable
as DateTime?,
topic: null == topic
? _self.topic
: topic // ignore: cast_nullable_to_non_nullable
as String,
title: null == title
? _self.title
: title // ignore: cast_nullable_to_non_nullable
as String,
subtitle: freezed == subtitle
? _self.subtitle
: subtitle // ignore: cast_nullable_to_non_nullable
as String?,
body: null == body
? _self.body
: body // ignore: cast_nullable_to_non_nullable
as String,
metadata: null == metadata
? _self._metadata
: metadata // ignore: cast_nullable_to_non_nullable
as Map<String, dynamic>,
priority: null == priority
? _self.priority
: priority // ignore: cast_nullable_to_non_nullable
as int,
senderId: freezed == senderId
? _self.senderId
: senderId // ignore: cast_nullable_to_non_nullable
as int?,
accountId: null == accountId
? _self.accountId
: accountId // ignore: cast_nullable_to_non_nullable
as int,
readAt: freezed == readAt
? _self.readAt
: readAt // ignore: cast_nullable_to_non_nullable
as DateTime?,
));
}
} }
// dart format on

View File

@ -6,8 +6,8 @@ part of 'notification.dart';
// JsonSerializableGenerator // JsonSerializableGenerator
// ************************************************************************** // **************************************************************************
_$SnNotificationImpl _$$SnNotificationImplFromJson(Map<String, dynamic> json) => _SnNotification _$SnNotificationFromJson(Map<String, dynamic> json) =>
_$SnNotificationImpl( _SnNotification(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -27,8 +27,7 @@ _$SnNotificationImpl _$$SnNotificationImplFromJson(Map<String, dynamic> json) =>
: DateTime.parse(json['read_at'] as String), : DateTime.parse(json['read_at'] as String),
); );
Map<String, dynamic> _$$SnNotificationImplToJson( Map<String, dynamic> _$SnNotificationToJson(_SnNotification instance) =>
_$SnNotificationImpl instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),

View File

@ -4,7 +4,7 @@ part 'poll.freezed.dart';
part 'poll.g.dart'; part 'poll.g.dart';
@freezed @freezed
class SnPoll with _$SnPoll { abstract class SnPoll with _$SnPoll {
const factory SnPoll({ const factory SnPoll({
required int id, required int id,
required DateTime createdAt, required DateTime createdAt,
@ -20,7 +20,7 @@ class SnPoll with _$SnPoll {
} }
@freezed @freezed
class SnPollMetric with _$SnPollMetric { abstract class SnPollMetric with _$SnPollMetric {
const factory SnPollMetric({ const factory SnPollMetric({
required int totalAnswer, required int totalAnswer,
@Default({}) Map<String, int> byOptions, @Default({}) Map<String, int> byOptions,
@ -32,7 +32,7 @@ class SnPollMetric with _$SnPollMetric {
} }
@freezed @freezed
class SnPollOption with _$SnPollOption { abstract class SnPollOption with _$SnPollOption {
const factory SnPollOption({ const factory SnPollOption({
required String id, required String id,
required String icon, required String icon,

File diff suppressed because it is too large Load Diff

View File

@ -6,7 +6,7 @@ part of 'poll.dart';
// JsonSerializableGenerator // JsonSerializableGenerator
// ************************************************************************** // **************************************************************************
_$SnPollImpl _$$SnPollImplFromJson(Map<String, dynamic> json) => _$SnPollImpl( _SnPoll _$SnPollFromJson(Map<String, dynamic> json) => _SnPoll(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -19,8 +19,7 @@ _$SnPollImpl _$$SnPollImplFromJson(Map<String, dynamic> json) => _$SnPollImpl(
metric: SnPollMetric.fromJson(json['metric'] as Map<String, dynamic>), metric: SnPollMetric.fromJson(json['metric'] as Map<String, dynamic>),
); );
Map<String, dynamic> _$$SnPollImplToJson(_$SnPollImpl instance) => Map<String, dynamic> _$SnPollToJson(_SnPoll instance) => <String, dynamic>{
<String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
'updated_at': instance.updatedAt.toIso8601String(), 'updated_at': instance.updatedAt.toIso8601String(),
@ -31,8 +30,8 @@ Map<String, dynamic> _$$SnPollImplToJson(_$SnPollImpl instance) =>
'metric': instance.metric.toJson(), 'metric': instance.metric.toJson(),
}; };
_$SnPollMetricImpl _$$SnPollMetricImplFromJson(Map<String, dynamic> json) => _SnPollMetric _$SnPollMetricFromJson(Map<String, dynamic> json) =>
_$SnPollMetricImpl( _SnPollMetric(
totalAnswer: (json['total_answer'] as num).toInt(), totalAnswer: (json['total_answer'] as num).toInt(),
byOptions: (json['by_options'] as Map<String, dynamic>?)?.map( byOptions: (json['by_options'] as Map<String, dynamic>?)?.map(
(k, e) => MapEntry(k, (e as num).toInt()), (k, e) => MapEntry(k, (e as num).toInt()),
@ -45,22 +44,22 @@ _$SnPollMetricImpl _$$SnPollMetricImplFromJson(Map<String, dynamic> json) =>
const {}, const {},
); );
Map<String, dynamic> _$$SnPollMetricImplToJson(_$SnPollMetricImpl instance) => Map<String, dynamic> _$SnPollMetricToJson(_SnPollMetric instance) =>
<String, dynamic>{ <String, dynamic>{
'total_answer': instance.totalAnswer, 'total_answer': instance.totalAnswer,
'by_options': instance.byOptions, 'by_options': instance.byOptions,
'by_options_percentage': instance.byOptionsPercentage, 'by_options_percentage': instance.byOptionsPercentage,
}; };
_$SnPollOptionImpl _$$SnPollOptionImplFromJson(Map<String, dynamic> json) => _SnPollOption _$SnPollOptionFromJson(Map<String, dynamic> json) =>
_$SnPollOptionImpl( _SnPollOption(
id: json['id'] as String, id: json['id'] as String,
icon: json['icon'] as String, icon: json['icon'] as String,
name: json['name'] as String, name: json['name'] as String,
description: json['description'] as String, description: json['description'] as String,
); );
Map<String, dynamic> _$$SnPollOptionImplToJson(_$SnPollOptionImpl instance) => Map<String, dynamic> _$SnPollOptionToJson(_SnPollOption instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'icon': instance.icon, 'icon': instance.icon,

View File

@ -7,7 +7,7 @@ part 'post.freezed.dart';
part 'post.g.dart'; part 'post.g.dart';
@freezed @freezed
class SnPost with _$SnPost { abstract class SnPost with _$SnPost {
const SnPost._(); const SnPost._();
const factory SnPost({ const factory SnPost({
@ -57,7 +57,7 @@ class SnPost with _$SnPost {
} }
@freezed @freezed
class SnPostTag with _$SnPostTag { abstract class SnPostTag with _$SnPostTag {
const factory SnPostTag({ const factory SnPostTag({
required int id, required int id,
required DateTime createdAt, required DateTime createdAt,
@ -74,7 +74,7 @@ class SnPostTag with _$SnPostTag {
} }
@freezed @freezed
class SnPostCategory with _$SnPostCategory { abstract class SnPostCategory with _$SnPostCategory {
const factory SnPostCategory({ const factory SnPostCategory({
required int id, required int id,
required DateTime createdAt, required DateTime createdAt,
@ -91,7 +91,7 @@ class SnPostCategory with _$SnPostCategory {
} }
@freezed @freezed
class SnPostPreload with _$SnPostPreload { abstract class SnPostPreload with _$SnPostPreload {
const factory SnPostPreload({ const factory SnPostPreload({
required SnAttachment? thumbnail, required SnAttachment? thumbnail,
required List<SnAttachment?>? attachments, required List<SnAttachment?>? attachments,
@ -105,7 +105,7 @@ class SnPostPreload with _$SnPostPreload {
} }
@freezed @freezed
class SnBody with _$SnBody { abstract class SnBody with _$SnBody {
const factory SnBody({ const factory SnBody({
required List<String> attachments, required List<String> attachments,
required String content, required String content,
@ -118,7 +118,7 @@ class SnBody with _$SnBody {
} }
@freezed @freezed
class SnMetric with _$SnMetric { abstract class SnMetric with _$SnMetric {
const factory SnMetric({ const factory SnMetric({
required int replyCount, required int replyCount,
required int reactionCount, required int reactionCount,
@ -130,7 +130,7 @@ class SnMetric with _$SnMetric {
} }
@freezed @freezed
class SnPublisher with _$SnPublisher { abstract class SnPublisher with _$SnPublisher {
const factory SnPublisher({ const factory SnPublisher({
required int id, required int id,
required DateTime createdAt, required DateTime createdAt,
@ -153,7 +153,7 @@ class SnPublisher with _$SnPublisher {
} }
@freezed @freezed
class SnSubscription with _$SnSubscription { abstract class SnSubscription with _$SnSubscription {
const factory SnSubscription({ const factory SnSubscription({
required int id, required int id,
required DateTime createdAt, required DateTime createdAt,

File diff suppressed because it is too large Load Diff

View File

@ -6,7 +6,7 @@ part of 'post.dart';
// JsonSerializableGenerator // JsonSerializableGenerator
// ************************************************************************** // **************************************************************************
_$SnPostImpl _$$SnPostImplFromJson(Map<String, dynamic> json) => _$SnPostImpl( _SnPost _$SnPostFromJson(Map<String, dynamic> json) => _SnPost(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -76,8 +76,7 @@ _$SnPostImpl _$$SnPostImplFromJson(Map<String, dynamic> json) => _$SnPostImpl(
: SnPostPreload.fromJson(json['preload'] as Map<String, dynamic>), : SnPostPreload.fromJson(json['preload'] as Map<String, dynamic>),
); );
Map<String, dynamic> _$$SnPostImplToJson(_$SnPostImpl instance) => Map<String, dynamic> _$SnPostToJson(_SnPost instance) => <String, dynamic>{
<String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
'updated_at': instance.updatedAt.toIso8601String(), 'updated_at': instance.updatedAt.toIso8601String(),
@ -115,8 +114,7 @@ Map<String, dynamic> _$$SnPostImplToJson(_$SnPostImpl instance) =>
'preload': instance.preload?.toJson(), 'preload': instance.preload?.toJson(),
}; };
_$SnPostTagImpl _$$SnPostTagImplFromJson(Map<String, dynamic> json) => _SnPostTag _$SnPostTagFromJson(Map<String, dynamic> json) => _SnPostTag(
_$SnPostTagImpl(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -127,7 +125,7 @@ _$SnPostTagImpl _$$SnPostTagImplFromJson(Map<String, dynamic> json) =>
posts: json['posts'], posts: json['posts'],
); );
Map<String, dynamic> _$$SnPostTagImplToJson(_$SnPostTagImpl instance) => Map<String, dynamic> _$SnPostTagToJson(_SnPostTag instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
@ -139,8 +137,8 @@ Map<String, dynamic> _$$SnPostTagImplToJson(_$SnPostTagImpl instance) =>
'posts': instance.posts, 'posts': instance.posts,
}; };
_$SnPostCategoryImpl _$$SnPostCategoryImplFromJson(Map<String, dynamic> json) => _SnPostCategory _$SnPostCategoryFromJson(Map<String, dynamic> json) =>
_$SnPostCategoryImpl( _SnPostCategory(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -151,8 +149,7 @@ _$SnPostCategoryImpl _$$SnPostCategoryImplFromJson(Map<String, dynamic> json) =>
posts: json['posts'], posts: json['posts'],
); );
Map<String, dynamic> _$$SnPostCategoryImplToJson( Map<String, dynamic> _$SnPostCategoryToJson(_SnPostCategory instance) =>
_$SnPostCategoryImpl instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
@ -164,8 +161,8 @@ Map<String, dynamic> _$$SnPostCategoryImplToJson(
'posts': instance.posts, 'posts': instance.posts,
}; };
_$SnPostPreloadImpl _$$SnPostPreloadImplFromJson(Map<String, dynamic> json) => _SnPostPreload _$SnPostPreloadFromJson(Map<String, dynamic> json) =>
_$SnPostPreloadImpl( _SnPostPreload(
thumbnail: json['thumbnail'] == null thumbnail: json['thumbnail'] == null
? null ? null
: SnAttachment.fromJson(json['thumbnail'] as Map<String, dynamic>), : SnAttachment.fromJson(json['thumbnail'] as Map<String, dynamic>),
@ -185,7 +182,7 @@ _$SnPostPreloadImpl _$$SnPostPreloadImplFromJson(Map<String, dynamic> json) =>
: SnRealm.fromJson(json['realm'] as Map<String, dynamic>), : SnRealm.fromJson(json['realm'] as Map<String, dynamic>),
); );
Map<String, dynamic> _$$SnPostPreloadImplToJson(_$SnPostPreloadImpl instance) => Map<String, dynamic> _$SnPostPreloadToJson(_SnPostPreload instance) =>
<String, dynamic>{ <String, dynamic>{
'thumbnail': instance.thumbnail?.toJson(), 'thumbnail': instance.thumbnail?.toJson(),
'attachments': instance.attachments?.map((e) => e?.toJson()).toList(), 'attachments': instance.attachments?.map((e) => e?.toJson()).toList(),
@ -194,7 +191,7 @@ Map<String, dynamic> _$$SnPostPreloadImplToJson(_$SnPostPreloadImpl instance) =>
'realm': instance.realm?.toJson(), 'realm': instance.realm?.toJson(),
}; };
_$SnBodyImpl _$$SnBodyImplFromJson(Map<String, dynamic> json) => _$SnBodyImpl( _SnBody _$SnBodyFromJson(Map<String, dynamic> json) => _SnBody(
attachments: (json['attachments'] as List<dynamic>) attachments: (json['attachments'] as List<dynamic>)
.map((e) => e as String) .map((e) => e as String)
.toList(), .toList(),
@ -204,8 +201,7 @@ _$SnBodyImpl _$$SnBodyImplFromJson(Map<String, dynamic> json) => _$SnBodyImpl(
title: json['title'], title: json['title'],
); );
Map<String, dynamic> _$$SnBodyImplToJson(_$SnBodyImpl instance) => Map<String, dynamic> _$SnBodyToJson(_SnBody instance) => <String, dynamic>{
<String, dynamic>{
'attachments': instance.attachments, 'attachments': instance.attachments,
'content': instance.content, 'content': instance.content,
'location': instance.location, 'location': instance.location,
@ -213,8 +209,7 @@ Map<String, dynamic> _$$SnBodyImplToJson(_$SnBodyImpl instance) =>
'title': instance.title, 'title': instance.title,
}; };
_$SnMetricImpl _$$SnMetricImplFromJson(Map<String, dynamic> json) => _SnMetric _$SnMetricFromJson(Map<String, dynamic> json) => _SnMetric(
_$SnMetricImpl(
replyCount: (json['reply_count'] as num).toInt(), replyCount: (json['reply_count'] as num).toInt(),
reactionCount: (json['reaction_count'] as num).toInt(), reactionCount: (json['reaction_count'] as num).toInt(),
reactionList: (json['reaction_list'] as Map<String, dynamic>?)?.map( reactionList: (json['reaction_list'] as Map<String, dynamic>?)?.map(
@ -223,15 +218,13 @@ _$SnMetricImpl _$$SnMetricImplFromJson(Map<String, dynamic> json) =>
const {}, const {},
); );
Map<String, dynamic> _$$SnMetricImplToJson(_$SnMetricImpl instance) => Map<String, dynamic> _$SnMetricToJson(_SnMetric instance) => <String, dynamic>{
<String, dynamic>{
'reply_count': instance.replyCount, 'reply_count': instance.replyCount,
'reaction_count': instance.reactionCount, 'reaction_count': instance.reactionCount,
'reaction_list': instance.reactionList, 'reaction_list': instance.reactionList,
}; };
_$SnPublisherImpl _$$SnPublisherImplFromJson(Map<String, dynamic> json) => _SnPublisher _$SnPublisherFromJson(Map<String, dynamic> json) => _SnPublisher(
_$SnPublisherImpl(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -250,7 +243,7 @@ _$SnPublisherImpl _$$SnPublisherImplFromJson(Map<String, dynamic> json) =>
accountId: (json['account_id'] as num).toInt(), accountId: (json['account_id'] as num).toInt(),
); );
Map<String, dynamic> _$$SnPublisherImplToJson(_$SnPublisherImpl instance) => Map<String, dynamic> _$SnPublisherToJson(_SnPublisher instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
@ -268,8 +261,8 @@ Map<String, dynamic> _$$SnPublisherImplToJson(_$SnPublisherImpl instance) =>
'account_id': instance.accountId, 'account_id': instance.accountId,
}; };
_$SnSubscriptionImpl _$$SnSubscriptionImplFromJson(Map<String, dynamic> json) => _SnSubscription _$SnSubscriptionFromJson(Map<String, dynamic> json) =>
_$SnSubscriptionImpl( _SnSubscription(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -280,8 +273,7 @@ _$SnSubscriptionImpl _$$SnSubscriptionImplFromJson(Map<String, dynamic> json) =>
accountId: (json['account_id'] as num).toInt(), accountId: (json['account_id'] as num).toInt(),
); );
Map<String, dynamic> _$$SnSubscriptionImplToJson( Map<String, dynamic> _$SnSubscriptionToJson(_SnSubscription instance) =>
_$SnSubscriptionImpl instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),

View File

@ -5,7 +5,7 @@ part 'realm.freezed.dart';
part 'realm.g.dart'; part 'realm.g.dart';
@freezed @freezed
class SnRealmMember with _$SnRealmMember { abstract class SnRealmMember with _$SnRealmMember {
const factory SnRealmMember({ const factory SnRealmMember({
required int id, required int id,
required DateTime createdAt, required DateTime createdAt,
@ -23,7 +23,7 @@ class SnRealmMember with _$SnRealmMember {
} }
@freezed @freezed
class SnRealm with _$SnRealm { abstract class SnRealm with _$SnRealm {
const SnRealm._(); const SnRealm._();
const factory SnRealm({ const factory SnRealm({

File diff suppressed because it is too large Load Diff

View File

@ -6,8 +6,8 @@ part of 'realm.dart';
// JsonSerializableGenerator // JsonSerializableGenerator
// ************************************************************************** // **************************************************************************
_$SnRealmMemberImpl _$$SnRealmMemberImplFromJson(Map<String, dynamic> json) => _SnRealmMember _$SnRealmMemberFromJson(Map<String, dynamic> json) =>
_$SnRealmMemberImpl( _SnRealmMember(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -21,7 +21,7 @@ _$SnRealmMemberImpl _$$SnRealmMemberImplFromJson(Map<String, dynamic> json) =>
powerLevel: (json['power_level'] as num).toInt(), powerLevel: (json['power_level'] as num).toInt(),
); );
Map<String, dynamic> _$$SnRealmMemberImplToJson(_$SnRealmMemberImpl instance) => Map<String, dynamic> _$SnRealmMemberToJson(_SnRealmMember instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
@ -34,8 +34,7 @@ Map<String, dynamic> _$$SnRealmMemberImplToJson(_$SnRealmMemberImpl instance) =>
'power_level': instance.powerLevel, 'power_level': instance.powerLevel,
}; };
_$SnRealmImpl _$$SnRealmImplFromJson(Map<String, dynamic> json) => _SnRealm _$SnRealmFromJson(Map<String, dynamic> json) => _SnRealm(
_$SnRealmImpl(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -57,8 +56,7 @@ _$SnRealmImpl _$$SnRealmImplFromJson(Map<String, dynamic> json) =>
popularity: (json['popularity'] as num?)?.toInt() ?? 0, popularity: (json['popularity'] as num?)?.toInt() ?? 0,
); );
Map<String, dynamic> _$$SnRealmImplToJson(_$SnRealmImpl instance) => Map<String, dynamic> _$SnRealmToJson(_SnRealm instance) => <String, dynamic>{
<String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
'updated_at': instance.updatedAt.toIso8601String(), 'updated_at': instance.updatedAt.toIso8601String(),

View File

@ -4,7 +4,7 @@ part 'wallet.freezed.dart';
part 'wallet.g.dart'; part 'wallet.g.dart';
@freezed @freezed
class SnWallet with _$SnWallet { abstract class SnWallet with _$SnWallet {
const factory SnWallet({ const factory SnWallet({
required int id, required int id,
required DateTime createdAt, required DateTime createdAt,
@ -19,7 +19,7 @@ class SnWallet with _$SnWallet {
} }
@freezed @freezed
class SnTransaction with _$SnTransaction { abstract class SnTransaction with _$SnTransaction {
const factory SnTransaction({ const factory SnTransaction({
required int id, required int id,
required DateTime createdAt, required DateTime createdAt,

File diff suppressed because it is too large Load Diff

View File

@ -6,8 +6,7 @@ part of 'wallet.dart';
// JsonSerializableGenerator // JsonSerializableGenerator
// ************************************************************************** // **************************************************************************
_$SnWalletImpl _$$SnWalletImplFromJson(Map<String, dynamic> json) => _SnWallet _$SnWalletFromJson(Map<String, dynamic> json) => _SnWallet(
_$SnWalletImpl(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -19,8 +18,7 @@ _$SnWalletImpl _$$SnWalletImplFromJson(Map<String, dynamic> json) =>
accountId: (json['account_id'] as num).toInt(), accountId: (json['account_id'] as num).toInt(),
); );
Map<String, dynamic> _$$SnWalletImplToJson(_$SnWalletImpl instance) => Map<String, dynamic> _$SnWalletToJson(_SnWallet instance) => <String, dynamic>{
<String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),
'updated_at': instance.updatedAt.toIso8601String(), 'updated_at': instance.updatedAt.toIso8601String(),
@ -30,8 +28,8 @@ Map<String, dynamic> _$$SnWalletImplToJson(_$SnWalletImpl instance) =>
'account_id': instance.accountId, 'account_id': instance.accountId,
}; };
_$SnTransactionImpl _$$SnTransactionImplFromJson(Map<String, dynamic> json) => _SnTransaction _$SnTransactionFromJson(Map<String, dynamic> json) =>
_$SnTransactionImpl( _SnTransaction(
id: (json['id'] as num).toInt(), id: (json['id'] as num).toInt(),
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String), updatedAt: DateTime.parse(json['updated_at'] as String),
@ -50,7 +48,7 @@ _$SnTransactionImpl _$$SnTransactionImplFromJson(Map<String, dynamic> json) =>
payeeId: (json['payee_id'] as num?)?.toInt(), payeeId: (json['payee_id'] as num?)?.toInt(),
); );
Map<String, dynamic> _$$SnTransactionImplToJson(_$SnTransactionImpl instance) => Map<String, dynamic> _$SnTransactionToJson(_SnTransaction instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'created_at': instance.createdAt.toIso8601String(), 'created_at': instance.createdAt.toIso8601String(),

View File

@ -4,7 +4,7 @@ part 'websocket.freezed.dart';
part 'websocket.g.dart'; part 'websocket.g.dart';
@freezed @freezed
class WebSocketPackage with _$WebSocketPackage { abstract class WebSocketPackage with _$WebSocketPackage {
const factory WebSocketPackage({ const factory WebSocketPackage({
@JsonKey(name: 'w') @Default('unknown') String method, @JsonKey(name: 'w') @Default('unknown') String method,
@JsonKey(name: 'e') String? endpoint, @JsonKey(name: 'e') String? endpoint,

View File

@ -1,3 +1,4 @@
// dart format width=80
// coverage:ignore-file // coverage:ignore-file
// GENERATED CODE - DO NOT MODIFY BY HAND // GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint // ignore_for_file: type=lint
@ -9,97 +10,59 @@ part of 'websocket.dart';
// FreezedGenerator // FreezedGenerator
// ************************************************************************** // **************************************************************************
// dart format off
T _$identity<T>(T value) => value; T _$identity<T>(T value) => value;
final _privateConstructorUsedError = UnsupportedError(
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models');
WebSocketPackage _$WebSocketPackageFromJson(Map<String, dynamic> json) {
return _WebSocketPackage.fromJson(json);
}
/// @nodoc /// @nodoc
mixin _$WebSocketPackage { mixin _$WebSocketPackage {
@JsonKey(name: 'w') @JsonKey(name: 'w')
String get method => throw _privateConstructorUsedError; String get method;
@JsonKey(name: 'e') @JsonKey(name: 'e')
String? get endpoint => throw _privateConstructorUsedError; String? get endpoint;
@JsonKey(name: 'm') @JsonKey(name: 'm')
String? get message => throw _privateConstructorUsedError; String? get message;
@JsonKey(name: 'p') @JsonKey(name: 'p')
Map<String, dynamic>? get payload => throw _privateConstructorUsedError; Map<String, dynamic>? get payload;
/// Serializes this WebSocketPackage to a JSON map.
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
/// Create a copy of WebSocketPackage /// Create a copy of WebSocketPackage
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false) @JsonKey(includeFromJson: false, includeToJson: false)
$WebSocketPackageCopyWith<WebSocketPackage> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $WebSocketPackageCopyWith<$Res> {
factory $WebSocketPackageCopyWith(
WebSocketPackage value, $Res Function(WebSocketPackage) then) =
_$WebSocketPackageCopyWithImpl<$Res, WebSocketPackage>;
@useResult
$Res call(
{@JsonKey(name: 'w') String method,
@JsonKey(name: 'e') String? endpoint,
@JsonKey(name: 'm') String? message,
@JsonKey(name: 'p') Map<String, dynamic>? payload});
}
/// @nodoc
class _$WebSocketPackageCopyWithImpl<$Res, $Val extends WebSocketPackage>
implements $WebSocketPackageCopyWith<$Res> {
_$WebSocketPackageCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
/// Create a copy of WebSocketPackage
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline') @pragma('vm:prefer-inline')
$WebSocketPackageCopyWith<WebSocketPackage> get copyWith =>
_$WebSocketPackageCopyWithImpl<WebSocketPackage>(
this as WebSocketPackage, _$identity);
/// Serializes this WebSocketPackage to a JSON map.
Map<String, dynamic> toJson();
@override @override
$Res call({ bool operator ==(Object other) {
Object? method = null, return identical(this, other) ||
Object? endpoint = freezed, (other.runtimeType == runtimeType &&
Object? message = freezed, other is WebSocketPackage &&
Object? payload = freezed, (identical(other.method, method) || other.method == method) &&
}) { (identical(other.endpoint, endpoint) ||
return _then(_value.copyWith( other.endpoint == endpoint) &&
method: null == method (identical(other.message, message) || other.message == message) &&
? _value.method const DeepCollectionEquality().equals(other.payload, payload));
: method // ignore: cast_nullable_to_non_nullable }
as String,
endpoint: freezed == endpoint @JsonKey(includeFromJson: false, includeToJson: false)
? _value.endpoint @override
: endpoint // ignore: cast_nullable_to_non_nullable int get hashCode => Object.hash(runtimeType, method, endpoint, message,
as String?, const DeepCollectionEquality().hash(payload));
message: freezed == message
? _value.message @override
: message // ignore: cast_nullable_to_non_nullable String toString() {
as String?, return 'WebSocketPackage(method: $method, endpoint: $endpoint, message: $message, payload: $payload)';
payload: freezed == payload
? _value.payload
: payload // ignore: cast_nullable_to_non_nullable
as Map<String, dynamic>?,
) as $Val);
} }
} }
/// @nodoc /// @nodoc
abstract class _$$WebSocketPackageImplCopyWith<$Res> abstract mixin class $WebSocketPackageCopyWith<$Res> {
implements $WebSocketPackageCopyWith<$Res> { factory $WebSocketPackageCopyWith(
factory _$$WebSocketPackageImplCopyWith(_$WebSocketPackageImpl value, WebSocketPackage value, $Res Function(WebSocketPackage) _then) =
$Res Function(_$WebSocketPackageImpl) then) = _$WebSocketPackageCopyWithImpl;
__$$WebSocketPackageImplCopyWithImpl<$Res>;
@override
@useResult @useResult
$Res call( $Res call(
{@JsonKey(name: 'w') String method, {@JsonKey(name: 'w') String method,
@ -109,12 +72,12 @@ abstract class _$$WebSocketPackageImplCopyWith<$Res>
} }
/// @nodoc /// @nodoc
class __$$WebSocketPackageImplCopyWithImpl<$Res> class _$WebSocketPackageCopyWithImpl<$Res>
extends _$WebSocketPackageCopyWithImpl<$Res, _$WebSocketPackageImpl> implements $WebSocketPackageCopyWith<$Res> {
implements _$$WebSocketPackageImplCopyWith<$Res> { _$WebSocketPackageCopyWithImpl(this._self, this._then);
__$$WebSocketPackageImplCopyWithImpl(_$WebSocketPackageImpl _value,
$Res Function(_$WebSocketPackageImpl) _then) final WebSocketPackage _self;
: super(_value, _then); final $Res Function(WebSocketPackage) _then;
/// Create a copy of WebSocketPackage /// Create a copy of WebSocketPackage
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@ -126,21 +89,21 @@ class __$$WebSocketPackageImplCopyWithImpl<$Res>
Object? message = freezed, Object? message = freezed,
Object? payload = freezed, Object? payload = freezed,
}) { }) {
return _then(_$WebSocketPackageImpl( return _then(_self.copyWith(
method: null == method method: null == method
? _value.method ? _self.method
: method // ignore: cast_nullable_to_non_nullable : method // ignore: cast_nullable_to_non_nullable
as String, as String,
endpoint: freezed == endpoint endpoint: freezed == endpoint
? _value.endpoint ? _self.endpoint
: endpoint // ignore: cast_nullable_to_non_nullable : endpoint // ignore: cast_nullable_to_non_nullable
as String?, as String?,
message: freezed == message message: freezed == message
? _value.message ? _self.message
: message // ignore: cast_nullable_to_non_nullable : message // ignore: cast_nullable_to_non_nullable
as String?, as String?,
payload: freezed == payload payload: freezed == payload
? _value._payload ? _self.payload
: payload // ignore: cast_nullable_to_non_nullable : payload // ignore: cast_nullable_to_non_nullable
as Map<String, dynamic>?, as Map<String, dynamic>?,
)); ));
@ -149,16 +112,15 @@ class __$$WebSocketPackageImplCopyWithImpl<$Res>
/// @nodoc /// @nodoc
@JsonSerializable() @JsonSerializable()
class _$WebSocketPackageImpl implements _WebSocketPackage { class _WebSocketPackage implements WebSocketPackage {
const _$WebSocketPackageImpl( const _WebSocketPackage(
{@JsonKey(name: 'w') this.method = 'unknown', {@JsonKey(name: 'w') this.method = 'unknown',
@JsonKey(name: 'e') this.endpoint, @JsonKey(name: 'e') this.endpoint,
@JsonKey(name: 'm') this.message, @JsonKey(name: 'm') this.message,
@JsonKey(name: 'p') final Map<String, dynamic>? payload = const {}}) @JsonKey(name: 'p') final Map<String, dynamic>? payload = const {}})
: _payload = payload; : _payload = payload;
factory _WebSocketPackage.fromJson(Map<String, dynamic> json) =>
factory _$WebSocketPackageImpl.fromJson(Map<String, dynamic> json) => _$WebSocketPackageFromJson(json);
_$$WebSocketPackageImplFromJson(json);
@override @override
@JsonKey(name: 'w') @JsonKey(name: 'w')
@ -180,16 +142,26 @@ class _$WebSocketPackageImpl implements _WebSocketPackage {
return EqualUnmodifiableMapView(value); return EqualUnmodifiableMapView(value);
} }
/// Create a copy of WebSocketPackage
/// with the given fields replaced by the non-null parameter values.
@override @override
String toString() { @JsonKey(includeFromJson: false, includeToJson: false)
return 'WebSocketPackage(method: $method, endpoint: $endpoint, message: $message, payload: $payload)'; @pragma('vm:prefer-inline')
_$WebSocketPackageCopyWith<_WebSocketPackage> get copyWith =>
__$WebSocketPackageCopyWithImpl<_WebSocketPackage>(this, _$identity);
@override
Map<String, dynamic> toJson() {
return _$WebSocketPackageToJson(
this,
);
} }
@override @override
bool operator ==(Object other) { bool operator ==(Object other) {
return identical(this, other) || return identical(this, other) ||
(other.runtimeType == runtimeType && (other.runtimeType == runtimeType &&
other is _$WebSocketPackageImpl && other is _WebSocketPackage &&
(identical(other.method, method) || other.method == method) && (identical(other.method, method) || other.method == method) &&
(identical(other.endpoint, endpoint) || (identical(other.endpoint, endpoint) ||
other.endpoint == endpoint) && other.endpoint == endpoint) &&
@ -202,51 +174,64 @@ class _$WebSocketPackageImpl implements _WebSocketPackage {
int get hashCode => Object.hash(runtimeType, method, endpoint, message, int get hashCode => Object.hash(runtimeType, method, endpoint, message,
const DeepCollectionEquality().hash(_payload)); const DeepCollectionEquality().hash(_payload));
/// Create a copy of WebSocketPackage
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@override @override
@pragma('vm:prefer-inline') String toString() {
_$$WebSocketPackageImplCopyWith<_$WebSocketPackageImpl> get copyWith => return 'WebSocketPackage(method: $method, endpoint: $endpoint, message: $message, payload: $payload)';
__$$WebSocketPackageImplCopyWithImpl<_$WebSocketPackageImpl>(
this, _$identity);
@override
Map<String, dynamic> toJson() {
return _$$WebSocketPackageImplToJson(
this,
);
} }
} }
abstract class _WebSocketPackage implements WebSocketPackage { /// @nodoc
const factory _WebSocketPackage( abstract mixin class _$WebSocketPackageCopyWith<$Res>
{@JsonKey(name: 'w') final String method, implements $WebSocketPackageCopyWith<$Res> {
@JsonKey(name: 'e') final String? endpoint, factory _$WebSocketPackageCopyWith(
@JsonKey(name: 'm') final String? message, _WebSocketPackage value, $Res Function(_WebSocketPackage) _then) =
@JsonKey(name: 'p') final Map<String, dynamic>? payload}) = __$WebSocketPackageCopyWithImpl;
_$WebSocketPackageImpl; @override
@useResult
$Res call(
{@JsonKey(name: 'w') String method,
@JsonKey(name: 'e') String? endpoint,
@JsonKey(name: 'm') String? message,
@JsonKey(name: 'p') Map<String, dynamic>? payload});
}
factory _WebSocketPackage.fromJson(Map<String, dynamic> json) = /// @nodoc
_$WebSocketPackageImpl.fromJson; class __$WebSocketPackageCopyWithImpl<$Res>
implements _$WebSocketPackageCopyWith<$Res> {
__$WebSocketPackageCopyWithImpl(this._self, this._then);
@override final _WebSocketPackage _self;
@JsonKey(name: 'w') final $Res Function(_WebSocketPackage) _then;
String get method;
@override
@JsonKey(name: 'e')
String? get endpoint;
@override
@JsonKey(name: 'm')
String? get message;
@override
@JsonKey(name: 'p')
Map<String, dynamic>? get payload;
/// Create a copy of WebSocketPackage /// Create a copy of WebSocketPackage
/// with the given fields replaced by the non-null parameter values. /// with the given fields replaced by the non-null parameter values.
@override @override
@JsonKey(includeFromJson: false, includeToJson: false) @pragma('vm:prefer-inline')
_$$WebSocketPackageImplCopyWith<_$WebSocketPackageImpl> get copyWith => $Res call({
throw _privateConstructorUsedError; Object? method = null,
Object? endpoint = freezed,
Object? message = freezed,
Object? payload = freezed,
}) {
return _then(_WebSocketPackage(
method: null == method
? _self.method
: method // ignore: cast_nullable_to_non_nullable
as String,
endpoint: freezed == endpoint
? _self.endpoint
: endpoint // ignore: cast_nullable_to_non_nullable
as String?,
message: freezed == message
? _self.message
: message // ignore: cast_nullable_to_non_nullable
as String?,
payload: freezed == payload
? _self._payload
: payload // ignore: cast_nullable_to_non_nullable
as Map<String, dynamic>?,
));
}
} }
// dart format on

View File

@ -6,17 +6,15 @@ part of 'websocket.dart';
// JsonSerializableGenerator // JsonSerializableGenerator
// ************************************************************************** // **************************************************************************
_$WebSocketPackageImpl _$$WebSocketPackageImplFromJson( _WebSocketPackage _$WebSocketPackageFromJson(Map<String, dynamic> json) =>
Map<String, dynamic> json) => _WebSocketPackage(
_$WebSocketPackageImpl(
method: json['w'] as String? ?? 'unknown', method: json['w'] as String? ?? 'unknown',
endpoint: json['e'] as String?, endpoint: json['e'] as String?,
message: json['m'] as String?, message: json['m'] as String?,
payload: json['p'] as Map<String, dynamic>? ?? const {}, payload: json['p'] as Map<String, dynamic>? ?? const {},
); );
Map<String, dynamic> _$$WebSocketPackageImplToJson( Map<String, dynamic> _$WebSocketPackageToJson(_WebSocketPackage instance) =>
_$WebSocketPackageImpl instance) =>
<String, dynamic>{ <String, dynamic>{
'w': instance.method, 'w': instance.method,
'e': instance.endpoint, 'e': instance.endpoint,

View File

@ -92,10 +92,9 @@ class OpenablePostItem extends StatelessWidget {
openColor: Colors.transparent, openColor: Colors.transparent,
openElevation: 0, openElevation: 0,
transitionType: ContainerTransitionType.fade, transitionType: ContainerTransitionType.fade,
closedColor: closedColor: Theme.of(context).colorScheme.surfaceContainerLow.withOpacity(
Theme.of(context).colorScheme.surfaceContainerLow.withOpacity( cfg.prefs.getBool(kAppBackgroundStoreKey) == true ? 0.75 : 1,
cfg.prefs.getBool(kAppBackgroundStoreKey) == true ? 0.75 : 1, ),
),
closedShape: const RoundedRectangleBorder( closedShape: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(16)), borderRadius: BorderRadius.all(Radius.circular(16)),
), ),
@ -136,11 +135,9 @@ class PostItem extends StatelessWidget {
final box = context.findRenderObject() as RenderBox?; final box = context.findRenderObject() as RenderBox?;
final url = 'https://solsynth.dev/posts/${data.id}'; final url = 'https://solsynth.dev/posts/${data.id}';
if (!kIsWeb && (Platform.isAndroid || Platform.isIOS)) { if (!kIsWeb && (Platform.isAndroid || Platform.isIOS)) {
Share.shareUri(Uri.parse(url), Share.shareUri(Uri.parse(url), sharePositionOrigin: box!.localToGlobal(Offset.zero) & box.size);
sharePositionOrigin: box!.localToGlobal(Offset.zero) & box.size);
} else { } else {
Share.share(url, Share.share(url, sharePositionOrigin: box!.localToGlobal(Offset.zero) & box.size);
sharePositionOrigin: box!.localToGlobal(Offset.zero) & box.size);
} }
} }
@ -158,8 +155,7 @@ class PostItem extends StatelessWidget {
child: MultiProvider( child: MultiProvider(
providers: [ providers: [
Provider<SnNetworkProvider>(create: (_) => context.read()), Provider<SnNetworkProvider>(create: (_) => context.read()),
ChangeNotifierProvider<ConfigProvider>( ChangeNotifierProvider<ConfigProvider>(create: (_) => context.read()),
create: (_) => context.read()),
], ],
child: ResponsiveBreakpoints.builder( child: ResponsiveBreakpoints.builder(
breakpoints: ResponsiveBreakpoints.of(context).breakpoints, breakpoints: ResponsiveBreakpoints.of(context).breakpoints,
@ -187,8 +183,7 @@ class PostItem extends StatelessWidget {
sharePositionOrigin: box!.localToGlobal(Offset.zero) & box.size, sharePositionOrigin: box!.localToGlobal(Offset.zero) & box.size,
); );
} else { } else {
await FileSaver.instance.saveFile( await FileSaver.instance.saveFile(name: 'Solar Network Post #${data.id}.png', file: imageFile);
name: 'Solar Network Post #${data.id}.png', file: imageFile);
} }
await imageFile.delete(); await imageFile.delete();
@ -202,9 +197,7 @@ class PostItem extends StatelessWidget {
final isAuthor = ua.isAuthorized && data.publisher.accountId == ua.user?.id; final isAuthor = ua.isAuthorized && data.publisher.accountId == ua.user?.id;
// Video full view // Video full view
if (showFullPost && if (showFullPost && data.type == 'video' && ResponsiveBreakpoints.of(context).largerThan(TABLET)) {
data.type == 'video' &&
ResponsiveBreakpoints.of(context).largerThan(TABLET)) {
return Row( return Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
@ -224,8 +217,7 @@ class PostItem extends StatelessWidget {
if (onDeleted != null) {} if (onDeleted != null) {}
}, },
).padding(bottom: 8), ).padding(bottom: 8),
if (data.preload?.video != null) if (data.preload?.video != null) _PostVideoPlayer(data: data).padding(bottom: 8),
_PostVideoPlayer(data: data).padding(bottom: 8),
_PostHeadline(data: data).padding(horizontal: 4, bottom: 8), _PostHeadline(data: data).padding(horizontal: 4, bottom: 8),
_PostFeaturedComment(data: data), _PostFeaturedComment(data: data),
_PostBottomAction( _PostBottomAction(
@ -273,8 +265,7 @@ class PostItem extends StatelessWidget {
if (onDeleted != null) {} if (onDeleted != null) {}
}, },
).padding(horizontal: 12, top: 8, bottom: 8), ).padding(horizontal: 12, top: 8, bottom: 8),
if (data.preload?.video != null) if (data.preload?.video != null) _PostVideoPlayer(data: data).padding(horizontal: 12, bottom: 8),
_PostVideoPlayer(data: data).padding(horizontal: 12, bottom: 8),
Container( Container(
width: double.infinity, width: double.infinity,
margin: const EdgeInsets.only(bottom: 4, left: 12, right: 12), margin: const EdgeInsets.only(bottom: 4, left: 12, right: 12),
@ -317,13 +308,8 @@ class PostItem extends StatelessWidget {
], ],
), ),
), ),
Text('postArticle') Text('postArticle').tr().fontSize(13).opacity(0.75).padding(horizontal: 24, bottom: 8),
.tr() _PostFeaturedComment(data: data, maxWidth: maxWidth).padding(horizontal: 12),
.fontSize(13)
.opacity(0.75)
.padding(horizontal: 24, bottom: 8),
_PostFeaturedComment(data: data, maxWidth: maxWidth)
.padding(horizontal: 12),
_PostBottomAction( _PostBottomAction(
data: data, data: data,
showComments: showComments, showComments: showComments,
@ -338,8 +324,7 @@ class PostItem extends StatelessWidget {
} }
final displayableAttachments = data.preload?.attachments final displayableAttachments = data.preload?.attachments
?.where((ele) => ?.where((ele) => ele?.mediaType != SnMediaType.image || data.type != 'article')
ele?.mediaType != SnMediaType.image || data.type != 'article')
.toList(); .toList();
final cfg = context.read<ConfigProvider>(); final cfg = context.read<ConfigProvider>();
@ -364,13 +349,9 @@ class PostItem extends StatelessWidget {
if (onDeleted != null) onDeleted!(); if (onDeleted != null) onDeleted!();
}, },
).padding(horizontal: 12, vertical: 8), ).padding(horizontal: 12, vertical: 8),
if (data.preload?.video != null) if (data.preload?.video != null) _PostVideoPlayer(data: data).padding(horizontal: 12, bottom: 8),
_PostVideoPlayer(data: data).padding(horizontal: 12, bottom: 8), if (data.type == 'question') _PostQuestionHint(data: data).padding(horizontal: 16, bottom: 8),
if (data.type == 'question') if (data.body['title'] != null || data.body['description'] != null)
_PostQuestionHint(data: data)
.padding(horizontal: 16, bottom: 8),
if (data.body['title'] != null ||
data.body['description'] != null)
_PostHeadline( _PostHeadline(
data: data, data: data,
isEnlarge: data.type == 'article' && showFullPost, isEnlarge: data.type == 'article' && showFullPost,
@ -384,8 +365,7 @@ class PostItem extends StatelessWidget {
if (data.repostTo != null) if (data.repostTo != null)
_PostQuoteContent(child: data.repostTo!).padding( _PostQuoteContent(child: data.repostTo!).padding(
horizontal: 12, horizontal: 12,
bottom: bottom: data.preload?.attachments?.isNotEmpty ?? false ? 12 : 0,
data.preload?.attachments?.isNotEmpty ?? false ? 12 : 0,
), ),
if (data.visibility > 0) if (data.visibility > 0)
_PostVisibilityHint(data: data).padding( _PostVisibilityHint(data: data).padding(
@ -397,9 +377,7 @@ class PostItem extends StatelessWidget {
horizontal: 16, horizontal: 16,
vertical: 4, vertical: 4,
), ),
if (data.tags.isNotEmpty) if (data.tags.isNotEmpty) _PostTagsList(data: data).padding(horizontal: 16, top: 4, bottom: 6),
_PostTagsList(data: data)
.padding(horizontal: 16, top: 4, bottom: 6),
], ],
), ),
), ),
@ -412,16 +390,12 @@ class PostItem extends StatelessWidget {
fit: showFullPost ? BoxFit.cover : BoxFit.contain, fit: showFullPost ? BoxFit.cover : BoxFit.contain,
padding: const EdgeInsets.symmetric(horizontal: 12), padding: const EdgeInsets.symmetric(horizontal: 12),
), ),
if (data.preload?.poll != null) if (data.preload?.poll != null) PostPoll(poll: data.preload!.poll!).padding(horizontal: 12, vertical: 4),
PostPoll(poll: data.preload!.poll!) if (data.body['content'] != null && (cfg.prefs.getBool(kAppExpandPostLink) ?? true))
.padding(horizontal: 12, vertical: 4),
if (data.body['content'] != null &&
(cfg.prefs.getBool(kAppExpandPostLink) ?? true))
LinkPreviewWidget( LinkPreviewWidget(
text: data.body['content'], text: data.body['content'],
).padding(horizontal: 4), ).padding(horizontal: 4),
_PostFeaturedComment(data: data, maxWidth: maxWidth) _PostFeaturedComment(data: data, maxWidth: maxWidth).padding(horizontal: 12),
.padding(horizontal: 12),
Container( Container(
constraints: BoxConstraints(maxWidth: maxWidth ?? double.infinity), constraints: BoxConstraints(maxWidth: maxWidth ?? double.infinity),
child: Column( child: Column(
@ -483,8 +457,7 @@ class PostShareImageWidget extends StatelessWidget {
showMenu: false, showMenu: false,
isRelativeDate: false, isRelativeDate: false,
).padding(horizontal: 16, bottom: 8), ).padding(horizontal: 16, bottom: 8),
if (data.type == 'question') if (data.type == 'question') _PostQuestionHint(data: data).padding(horizontal: 16, bottom: 8),
_PostQuestionHint(data: data).padding(horizontal: 16, bottom: 8),
_PostHeadline( _PostHeadline(
data: data, data: data,
isEnlarge: data.type == 'article', isEnlarge: data.type == 'article',
@ -499,8 +472,7 @@ class PostShareImageWidget extends StatelessWidget {
child: data.repostTo!, child: data.repostTo!,
isRelativeDate: false, isRelativeDate: false,
).padding(horizontal: 16, bottom: 8), ).padding(horizontal: 16, bottom: 8),
if (data.type != 'article' && if (data.type != 'article' && (data.preload?.attachments?.isNotEmpty ?? false))
(data.preload?.attachments?.isNotEmpty ?? false))
StyledWidget(AttachmentList( StyledWidget(AttachmentList(
data: data.preload!.attachments!, data: data.preload!.attachments!,
columned: true, columned: true,
@ -509,8 +481,7 @@ class PostShareImageWidget extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
if (data.visibility > 0) _PostVisibilityHint(data: data), if (data.visibility > 0) _PostVisibilityHint(data: data),
if (data.body['content_truncated'] == true) if (data.body['content_truncated'] == true) _PostTruncatedHint(data: data),
_PostTruncatedHint(data: data),
], ],
).padding(horizontal: 16), ).padding(horizontal: 16),
_PostBottomAction( _PostBottomAction(
@ -570,8 +541,7 @@ class PostShareImageWidget extends StatelessWidget {
version: QrVersions.auto, version: QrVersions.auto,
size: 100, size: 100,
gapless: true, gapless: true,
embeddedImage: embeddedImage: AssetImage('assets/icon/icon-light-radius.png'),
AssetImage('assets/icon/icon-light-radius.png'),
embeddedImageStyle: QrEmbeddedImageStyle( embeddedImageStyle: QrEmbeddedImageStyle(
size: Size(28, 28), size: Size(28, 28),
), ),
@ -602,11 +572,9 @@ class _PostQuestionHint extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Row( return Row(
children: [ children: [
Icon(data.body['answer'] == null ? Symbols.help : Symbols.check_circle, Icon(data.body['answer'] == null ? Symbols.help : Symbols.check_circle, size: 20),
size: 20),
const Gap(4), const Gap(4),
if (data.body['answer'] == null && if (data.body['answer'] == null && data.body['reward']?.toDouble() != null)
data.body['reward']?.toDouble() != null)
Text('postQuestionUnansweredWithReward'.tr(args: [ Text('postQuestionUnansweredWithReward'.tr(args: [
'${data.body['reward']}', '${data.body['reward']}',
])).opacity(0.75) ])).opacity(0.75)
@ -642,9 +610,7 @@ class _PostBottomAction extends StatelessWidget {
); );
final String? mostTypicalReaction = data.metric.reactionList.isNotEmpty final String? mostTypicalReaction = data.metric.reactionList.isNotEmpty
? data.metric.reactionList.entries ? data.metric.reactionList.entries.reduce((a, b) => a.value > b.value ? a : b).key
.reduce((a, b) => a.value > b.value ? a : b)
.key
: null; : null;
return Row( return Row(
@ -658,8 +624,7 @@ class _PostBottomAction extends StatelessWidget {
InkWell( InkWell(
child: Row( child: Row(
children: [ children: [
if (mostTypicalReaction == null || if (mostTypicalReaction == null || kTemplateReactions[mostTypicalReaction] == null)
kTemplateReactions[mostTypicalReaction] == null)
Icon(Symbols.add_reaction, size: 20, color: iconColor) Icon(Symbols.add_reaction, size: 20, color: iconColor)
else else
Text( Text(
@ -671,8 +636,7 @@ class _PostBottomAction extends StatelessWidget {
), ),
), ),
const Gap(8), const Gap(8),
if (data.totalUpvote > 0 && if (data.totalUpvote > 0 && data.totalUpvote >= data.totalDownvote)
data.totalUpvote >= data.totalDownvote)
Text('postReactionUpvote').plural( Text('postReactionUpvote').plural(
data.totalUpvote, data.totalUpvote,
) )
@ -691,12 +655,8 @@ class _PostBottomAction extends StatelessWidget {
data: data, data: data,
onChanged: (value, attr, delta) { onChanged: (value, attr, delta) {
onChanged(data.copyWith( onChanged(data.copyWith(
totalUpvote: attr == 1 totalUpvote: attr == 1 ? data.totalUpvote + delta : data.totalUpvote,
? data.totalUpvote + delta totalDownvote: attr == 2 ? data.totalDownvote + delta : data.totalDownvote,
: data.totalUpvote,
totalDownvote: attr == 2
? data.totalDownvote + delta
: data.totalDownvote,
metric: data.metric.copyWith(reactionList: value), metric: data.metric.copyWith(reactionList: value),
)); ));
}, },
@ -803,7 +763,7 @@ class _PostHeadline extends StatelessWidget {
children: [ children: [
Text( Text(
'articleWrittenAt'.tr( 'articleWrittenAt'.tr(
args: [DateFormat('y/M/d HH:mm').format(data.createdAt)], args: [DateFormat('y/M/d HH:mm').format(data.createdAt.toLocal())],
), ),
style: TextStyle(fontSize: 13), style: TextStyle(fontSize: 13),
), ),
@ -811,7 +771,7 @@ class _PostHeadline extends StatelessWidget {
if (data.editedAt != null) if (data.editedAt != null)
Text( Text(
'articleEditedAt'.tr( 'articleEditedAt'.tr(
args: [DateFormat('y/M/d HH:mm').format(data.editedAt!)], args: [DateFormat('y/M/d HH:mm').format(data.editedAt!.toLocal())],
), ),
style: TextStyle(fontSize: 13), style: TextStyle(fontSize: 13),
), ),
@ -944,10 +904,8 @@ class _PostContentHeader extends StatelessWidget {
const Gap(4), const Gap(4),
Text( Text(
isRelativeDate isRelativeDate
? RelativeTime(context) ? RelativeTime(context).format((data.publishedAt ?? data.createdAt).toLocal())
.format(data.publishedAt ?? data.createdAt) : DateFormat('y/M/d HH:mm').format((data.publishedAt ?? data.createdAt).toLocal()),
: DateFormat('y/M/d HH:mm')
.format(data.publishedAt ?? data.createdAt),
).fontSize(13), ).fontSize(13),
], ],
).opacity(0.8), ).opacity(0.8),
@ -965,10 +923,8 @@ class _PostContentHeader extends StatelessWidget {
const Gap(4), const Gap(4),
Text( Text(
isRelativeDate isRelativeDate
? RelativeTime(context) ? RelativeTime(context).format((data.publishedAt ?? data.createdAt).toLocal())
.format(data.publishedAt ?? data.createdAt) : DateFormat('y/M/d HH:mm').format((data.publishedAt ?? data.createdAt).toLocal()),
: DateFormat('y/M/d HH:mm')
.format(data.publishedAt ?? data.createdAt),
).fontSize(13), ).fontSize(13),
], ],
).opacity(0.8), ).opacity(0.8),
@ -1151,8 +1107,7 @@ class _PostContentBody extends StatelessWidget {
if (data.body['content'] == null) return const SizedBox.shrink(); if (data.body['content'] == null) return const SizedBox.shrink();
final content = MarkdownTextContent( final content = MarkdownTextContent(
isAutoWarp: data.type == 'story', isAutoWarp: data.type == 'story',
isEnlargeSticker: isEnlargeSticker: RegExp(r"^:([-\w]+):$").hasMatch(data.body['content'] ?? ''),
RegExp(r"^:([-\w]+):$").hasMatch(data.body['content'] ?? ''),
textScaler: isEnlarge ? TextScaler.linear(1.1) : null, textScaler: isEnlarge ? TextScaler.linear(1.1) : null,
content: data.body['content'], content: data.body['content'],
attachments: data.preload?.attachments, attachments: data.preload?.attachments,
@ -1201,12 +1156,10 @@ class _PostQuoteContent extends StatelessWidget {
onDeleted: () {}, onDeleted: () {},
).padding(bottom: 4), ).padding(bottom: 4),
_PostContentBody(data: child), _PostContentBody(data: child),
if (child.visibility > 0) if (child.visibility > 0) _PostVisibilityHint(data: child).padding(top: 4),
_PostVisibilityHint(data: child).padding(top: 4),
], ],
).padding(horizontal: 16), ).padding(horizontal: 16),
if (child.type != 'article' && if (child.type != 'article' && (child.preload?.attachments?.isNotEmpty ?? false))
(child.preload?.attachments?.isNotEmpty ?? false))
ClipRRect( ClipRRect(
borderRadius: const BorderRadius.only( borderRadius: const BorderRadius.only(
bottomLeft: Radius.circular(8), bottomLeft: Radius.circular(8),
@ -1357,9 +1310,7 @@ class _PostTruncatedHint extends StatelessWidget {
const Gap(4), const Gap(4),
Text('postReadEstimate').tr(args: [ Text('postReadEstimate').tr(args: [
'${Duration( '${Duration(
seconds: (data.body['content_length'] as num).toDouble() * seconds: (data.body['content_length'] as num).toDouble() * 60 ~/ kHumanReadSpeed,
60 ~/
kHumanReadSpeed,
).inSeconds}s', ).inSeconds}s',
]), ]),
], ],
@ -1398,8 +1349,7 @@ class _PostFeaturedCommentState extends State<_PostFeaturedComment> {
// If this is a answered question, fetch the answer instead // If this is a answered question, fetch the answer instead
if (widget.data.type == 'question' && widget.data.body['answer'] != null) { if (widget.data.type == 'question' && widget.data.body['answer'] != null) {
final sn = context.read<SnNetworkProvider>(); final sn = context.read<SnNetworkProvider>();
final resp = final resp = await sn.client.get('/cgi/co/posts/${widget.data.body['answer']}');
await sn.client.get('/cgi/co/posts/${widget.data.body['answer']}');
_isAnswer = true; _isAnswer = true;
setState(() => _featuredComment = SnPost.fromJson(resp.data)); setState(() => _featuredComment = SnPost.fromJson(resp.data));
return; return;
@ -1407,11 +1357,9 @@ class _PostFeaturedCommentState extends State<_PostFeaturedComment> {
try { try {
final sn = context.read<SnNetworkProvider>(); final sn = context.read<SnNetworkProvider>();
final resp = await sn.client.get( final resp = await sn.client.get('/cgi/co/posts/${widget.data.id}/replies/featured', queryParameters: {
'/cgi/co/posts/${widget.data.id}/replies/featured', 'take': 1,
queryParameters: { });
'take': 1,
});
setState(() => _featuredComment = SnPost.fromJson(resp.data[0])); setState(() => _featuredComment = SnPost.fromJson(resp.data[0]));
} catch (err) { } catch (err) {
if (!mounted) return; if (!mounted) return;
@ -1440,9 +1388,7 @@ class _PostFeaturedCommentState extends State<_PostFeaturedComment> {
width: double.infinity, width: double.infinity,
child: Material( child: Material(
borderRadius: const BorderRadius.all(Radius.circular(8)), borderRadius: const BorderRadius.all(Radius.circular(8)),
color: _isAnswer color: _isAnswer ? Colors.green.withOpacity(0.5) : Theme.of(context).colorScheme.surfaceContainerHigh,
? Colors.green.withOpacity(0.5)
: Theme.of(context).colorScheme.surfaceContainerHigh,
child: InkWell( child: InkWell(
borderRadius: const BorderRadius.all(Radius.circular(8)), borderRadius: const BorderRadius.all(Radius.circular(8)),
onTap: () { onTap: () {
@ -1462,17 +1408,11 @@ class _PostFeaturedCommentState extends State<_PostFeaturedComment> {
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
const Gap(2), const Gap(2),
Icon(_isAnswer ? Symbols.task_alt : Symbols.prompt_suggestion, Icon(_isAnswer ? Symbols.task_alt : Symbols.prompt_suggestion, size: 20),
size: 20),
const Gap(10), const Gap(10),
Text( Text(
_isAnswer _isAnswer ? 'postQuestionAnswerTitle' : 'postFeaturedComment',
? 'postQuestionAnswerTitle' style: Theme.of(context).textTheme.titleMedium!.copyWith(fontSize: 15),
: 'postFeaturedComment',
style: Theme.of(context)
.textTheme
.titleMedium!
.copyWith(fontSize: 15),
).tr(), ).tr(),
], ],
), ),
@ -1610,8 +1550,7 @@ class _PostGetInsightPopupState extends State<_PostGetInsightPopup> {
} }
RegExp cleanThinkingRegExp = RegExp(r'<think>[\s\S]*?</think>'); RegExp cleanThinkingRegExp = RegExp(r'<think>[\s\S]*?</think>');
setState( setState(() => _response = out.replaceAll(cleanThinkingRegExp, '').trim());
() => _response = out.replaceAll(cleanThinkingRegExp, '').trim());
} catch (err) { } catch (err) {
if (!mounted) return; if (!mounted) return;
context.showErrorDialog(err); context.showErrorDialog(err);
@ -1634,16 +1573,11 @@ class _PostGetInsightPopupState extends State<_PostGetInsightPopup> {
children: [ children: [
const Icon(Symbols.book_4_spark, size: 24), const Icon(Symbols.book_4_spark, size: 24),
const Gap(16), const Gap(16),
Text('postGetInsightTitle', Text('postGetInsightTitle', style: Theme.of(context).textTheme.titleLarge).tr(),
style: Theme.of(context).textTheme.titleLarge)
.tr(),
], ],
).padding(horizontal: 20, top: 16, bottom: 12), ).padding(horizontal: 20, top: 16, bottom: 12),
const Gap(4), const Gap(4),
Text('postGetInsightDescription', Text('postGetInsightDescription', style: Theme.of(context).textTheme.bodySmall).tr().padding(horizontal: 20),
style: Theme.of(context).textTheme.bodySmall)
.tr()
.padding(horizontal: 20),
const Gap(4), const Gap(4),
if (_response == null) if (_response == null)
Expanded( Expanded(
@ -1661,16 +1595,12 @@ class _PostGetInsightPopupState extends State<_PostGetInsightPopup> {
leading: const Icon(Symbols.info), leading: const Icon(Symbols.info),
title: Text('aiThinkingProcess'.tr()), title: Text('aiThinkingProcess'.tr()),
tilePadding: const EdgeInsets.symmetric(horizontal: 20), tilePadding: const EdgeInsets.symmetric(horizontal: 20),
collapsedBackgroundColor: collapsedBackgroundColor: Theme.of(context).colorScheme.surfaceContainerHigh,
Theme.of(context).colorScheme.surfaceContainerHigh,
minTileHeight: 32, minTileHeight: 32,
children: [ children: [
SelectableText( SelectableText(
_thinkingProcess!, _thinkingProcess!,
style: Theme.of(context) style: Theme.of(context).textTheme.bodyMedium!.copyWith(fontStyle: FontStyle.italic),
.textTheme
.bodyMedium!
.copyWith(fontStyle: FontStyle.italic),
).padding(horizontal: 20, vertical: 8), ).padding(horizontal: 20, vertical: 8),
], ],
).padding(vertical: 8), ).padding(vertical: 8),
@ -1707,8 +1637,7 @@ class _PostVideoPlayer extends StatelessWidget {
aspectRatio: 16 / 9, aspectRatio: 16 / 9,
child: ClipRRect( child: ClipRRect(
borderRadius: const BorderRadius.all(Radius.circular(8)), borderRadius: const BorderRadius.all(Radius.circular(8)),
child: AttachmentItem( child: AttachmentItem(data: data.preload!.video!, heroTag: 'post-video-${data.id}'),
data: data.preload!.video!, heroTag: 'post-video-${data.id}'),
), ),
), ),
); );

View File

@ -406,8 +406,9 @@ class _PostMediaPendingItem extends StatelessWidget {
FutureBuilder<int?>( FutureBuilder<int?>(
future: media.length(), future: media.length(),
builder: (context, snapshot) { builder: (context, snapshot) {
if (!snapshot.hasData) if (!snapshot.hasData) {
return const SizedBox.shrink(); return const SizedBox.shrink();
}
return Text( return Text(
snapshot.data!.formatBytes(), snapshot.data!.formatBytes(),
style: GoogleFonts.robotoMono(fontSize: 13), style: GoogleFonts.robotoMono(fontSize: 13),

View File

@ -9,6 +9,7 @@
#include <bitsdojo_window_linux/bitsdojo_window_plugin.h> #include <bitsdojo_window_linux/bitsdojo_window_plugin.h>
#include <file_saver/file_saver_plugin.h> #include <file_saver/file_saver_plugin.h>
#include <file_selector_linux/file_selector_plugin.h> #include <file_selector_linux/file_selector_plugin.h>
#include <flutter_timezone/flutter_timezone_plugin.h>
#include <flutter_udid/flutter_udid_plugin.h> #include <flutter_udid/flutter_udid_plugin.h>
#include <flutter_webrtc/flutter_web_r_t_c_plugin.h> #include <flutter_webrtc/flutter_web_r_t_c_plugin.h>
#include <hotkey_manager_linux/hotkey_manager_linux_plugin.h> #include <hotkey_manager_linux/hotkey_manager_linux_plugin.h>
@ -30,6 +31,9 @@ void fl_register_plugins(FlPluginRegistry* registry) {
g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = g_autoptr(FlPluginRegistrar) file_selector_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin");
file_selector_plugin_register_with_registrar(file_selector_linux_registrar); file_selector_plugin_register_with_registrar(file_selector_linux_registrar);
g_autoptr(FlPluginRegistrar) flutter_timezone_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterTimezonePlugin");
flutter_timezone_plugin_register_with_registrar(flutter_timezone_registrar);
g_autoptr(FlPluginRegistrar) flutter_udid_registrar = g_autoptr(FlPluginRegistrar) flutter_udid_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterUdidPlugin"); fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterUdidPlugin");
flutter_udid_plugin_register_with_registrar(flutter_udid_registrar); flutter_udid_plugin_register_with_registrar(flutter_udid_registrar);

View File

@ -6,6 +6,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
bitsdojo_window_linux bitsdojo_window_linux
file_saver file_saver
file_selector_linux file_selector_linux
flutter_timezone
flutter_udid flutter_udid
flutter_webrtc flutter_webrtc
hotkey_manager_linux hotkey_manager_linux

View File

@ -15,9 +15,11 @@ import firebase_analytics
import firebase_core import firebase_core
import firebase_messaging import firebase_messaging
import flutter_inappwebview_macos import flutter_inappwebview_macos
import flutter_timezone
import flutter_udid import flutter_udid
import flutter_webrtc import flutter_webrtc
import gal import gal
import geolocator_apple
import hotkey_manager_macos import hotkey_manager_macos
import in_app_review import in_app_review
import livekit_client import livekit_client
@ -48,9 +50,11 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin")) FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin"))
InAppWebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "InAppWebViewFlutterPlugin")) InAppWebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "InAppWebViewFlutterPlugin"))
FlutterTimezonePlugin.register(with: registry.registrar(forPlugin: "FlutterTimezonePlugin"))
FlutterUdidPlugin.register(with: registry.registrar(forPlugin: "FlutterUdidPlugin")) FlutterUdidPlugin.register(with: registry.registrar(forPlugin: "FlutterUdidPlugin"))
FlutterWebRTCPlugin.register(with: registry.registrar(forPlugin: "FlutterWebRTCPlugin")) FlutterWebRTCPlugin.register(with: registry.registrar(forPlugin: "FlutterWebRTCPlugin"))
GalPlugin.register(with: registry.registrar(forPlugin: "GalPlugin")) GalPlugin.register(with: registry.registrar(forPlugin: "GalPlugin"))
GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin"))
HotkeyManagerMacosPlugin.register(with: registry.registrar(forPlugin: "HotkeyManagerMacosPlugin")) HotkeyManagerMacosPlugin.register(with: registry.registrar(forPlugin: "HotkeyManagerMacosPlugin"))
InAppReviewPlugin.register(with: registry.registrar(forPlugin: "InAppReviewPlugin")) InAppReviewPlugin.register(with: registry.registrar(forPlugin: "InAppReviewPlugin"))
LiveKitPlugin.register(with: registry.registrar(forPlugin: "LiveKitPlugin")) LiveKitPlugin.register(with: registry.registrar(forPlugin: "LiveKitPlugin"))

View File

@ -13,10 +13,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: _flutterfire_internals name: _flutterfire_internals
sha256: "401dd18096f5eaa140404ccbbbf346f83c850e6f27049698a7ee75a3488ddb32" sha256: "7fd72d77a7487c26faab1d274af23fb008763ddc10800261abbfb2c067f183d5"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.3.52" version: "1.3.53"
analyzer: analyzer:
dependency: transitive dependency: transitive
description: description:
@ -45,10 +45,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: archive name: archive
sha256: "528579c7e4579719f04b21eeeeddfd73a18b31dabc22766893b7d1be7f49b967" sha256: "0c64e928dcbefddecd234205422bcfc2b5e6d31be0b86fef0d0dd48d7b4c9742"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.0.3" version: "4.0.4"
args: args:
dependency: transitive dependency: transitive
description: description:
@ -173,10 +173,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: built_value name: built_value
sha256: "28a712df2576b63c6c005c465989a348604960c0958d28be5303ba9baa841ac2" sha256: "8b158ab94ec6913e480dc3f752418348b5ae099eb75868b5f4775f0572999c61"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "8.9.3" version: "8.9.4"
cached_network_image: cached_network_image:
dependency: "direct main" dependency: "direct main"
description: description:
@ -345,6 +345,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.0.8" version: "1.0.8"
dart_earcut:
dependency: transitive
description:
name: dart_earcut
sha256: e485001bfc05dcbc437d7bfb666316182e3522d4c3f9668048e004d0eb2ce43b
url: "https://pub.dev"
source: hosted
version: "1.2.0"
dart_style: dart_style:
dependency: transitive dependency: transitive
description: description:
@ -373,10 +381,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: device_info_plus name: device_info_plus
sha256: "72d146c6d7098689ff5c5f66bcf593ac11efc530095385356e131070333e64da" sha256: "610739247975c2d0de43482afa13ec1018f63c9fddf97ef3d8dc895faa3b4543"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "11.3.0" version: "11.3.2"
device_info_plus_platform_interface: device_info_plus_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -525,10 +533,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: file_picker name: file_picker
sha256: "9467b7c4eedf0bd4c9306b0ec12455b278f6366962be061d0978a446c103c111" sha256: "7423298f08f6fc8cce05792bae329f9a93653fc9c08712831b1a55540127995d"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "9.0.1" version: "9.0.2"
file_saver: file_saver:
dependency: "direct main" dependency: "direct main"
description: description:
@ -573,34 +581,34 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: firebase_analytics name: firebase_analytics
sha256: "6abce50b79729d8a13c3d4ae05ac612d5ef2f57394330bc5e581ca0e762325f4" sha256: "81a582e9348216fcf6b30878487369325bf78b8ddd752ed176949c8e4fd4aaac"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "11.4.3" version: "11.4.4"
firebase_analytics_platform_interface: firebase_analytics_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: firebase_analytics_platform_interface name: firebase_analytics_platform_interface
sha256: cd9ae65870bf23ab7e63a04fe9c1b38522fd3556a8c32288afd3f5cb10d4b8f4 sha256: "5ae7bd4a551b67009cd0676f5407331b202eaf16e0a80dcf7b40cd0a34a18746"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.3.3" version: "4.3.4"
firebase_analytics_web: firebase_analytics_web:
dependency: transitive dependency: transitive
description: description:
name: firebase_analytics_web name: firebase_analytics_web
sha256: "5654ed7e39d7a8099e60748924327159785512d78d913e965f9ca93c533af910" sha256: "15fd7459fea2a00958dbf9b86cd8ad14d3ce2db13950308af7c7717e89ccc5c2"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.5.10+9" version: "0.5.10+10"
firebase_core: firebase_core:
dependency: "direct main" dependency: "direct main"
description: description:
name: firebase_core name: firebase_core
sha256: "6a4ea0f1d533443c8afc3d809cd36a4e2b8f2e2e711f697974f55bb31d71d1b8" sha256: f4d8f49574a4e396f34567f3eec4d38ab9c3910818dec22ca42b2a467c685d8b
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.12.0" version: "3.12.1"
firebase_core_platform_interface: firebase_core_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -613,34 +621,34 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: firebase_core_web name: firebase_core_web
sha256: e47f5c2776de018fa19bc9f6f723df136bc75cdb164d64b65305babd715c8e41 sha256: faa5a76f6380a9b90b53bc3bdcb85bc7926a382e0709b9b5edac9f7746651493
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.21.0" version: "2.21.1"
firebase_messaging: firebase_messaging:
dependency: "direct main" dependency: "direct main"
description: description:
name: firebase_messaging name: firebase_messaging
sha256: "8755a083a20bac4485e8b46d223f6f2eab34e659a76a75f8cf3cded53bc98a15" sha256: "5fc345c6341f9dc69fd0ffcbf508c784fd6d1b9e9f249587f30434dd8b6aa281"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "15.2.3" version: "15.2.4"
firebase_messaging_platform_interface: firebase_messaging_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: firebase_messaging_platform_interface name: firebase_messaging_platform_interface
sha256: "8cc771079677460de53ad8fcca5bc3074d58c5fc4f9d89b19585e5bfd9c64292" sha256: a935924cf40925985c8049df4968b1dde5c704f570f3ce380b31d3de6990dd94
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.6.3" version: "4.6.4"
firebase_messaging_web: firebase_messaging_web:
dependency: transitive dependency: transitive
description: description:
name: firebase_messaging_web name: firebase_messaging_web
sha256: caa73059b0396c97f691683c4cfc3f897c8543801579b7dd4851c431d8e4e091 sha256: fafebf6a1921931334f3f10edb5037a5712288efdd022881e2d093e5654a2fd4
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.10.3" version: "3.10.4"
fixnum: fixnum:
dependency: transitive dependency: transitive
description: description:
@ -803,6 +811,14 @@ packages:
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.0" version: "0.0.0"
flutter_map:
dependency: "direct main"
description:
name: flutter_map
sha256: bbf145e8220531f2f727608c431871c7457f3b134e513543913afd00fdc1cd47
url: "https://pub.dev"
source: hosted
version: "8.1.0"
flutter_markdown: flutter_markdown:
dependency: "direct main" dependency: "direct main"
description: description:
@ -839,10 +855,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: flutter_plugin_android_lifecycle name: flutter_plugin_android_lifecycle
sha256: "615a505aef59b151b46bbeef55b36ce2b6ed299d160c51d84281946f0aa0ce0e" sha256: "1c2b787f99bdca1f3718543f81d38aa1b124817dfeb9fb196201bea85b6134bf"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.24" version: "2.0.26"
flutter_shaders: flutter_shaders:
dependency: transitive dependency: transitive
description: description:
@ -872,6 +888,14 @@ packages:
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.0" version: "0.0.0"
flutter_timezone:
dependency: "direct main"
description:
name: flutter_timezone
sha256: bc286cecb0366d88e6c4644e3962ebd1ce1d233abc658eb1e0cd803389f84b64
url: "https://pub.dev"
source: hosted
version: "4.1.0"
flutter_udid: flutter_udid:
dependency: "direct main" dependency: "direct main"
description: description:
@ -897,10 +921,10 @@ packages:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: freezed name: freezed
sha256: "532008570b7fd20310db8cb9c8ebc5bafd5aa4e52c4358db4e5ddc29f74f4be3" sha256: a3d6429368603a591ca7c1795799a247998fb213ded509070c2c59708b25df31
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.1" version: "3.0.2"
freezed_annotation: freezed_annotation:
dependency: "direct main" dependency: "direct main"
description: description:
@ -933,6 +957,54 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.1" version: "3.0.1"
geolocator:
dependency: "direct main"
description:
name: geolocator
sha256: d2ec66329cab29cb297d51d96c067d457ca519dca8589665fa0b82ebacb7dbe4
url: "https://pub.dev"
source: hosted
version: "13.0.2"
geolocator_android:
dependency: transitive
description:
name: geolocator_android
sha256: "7aefc530db47d90d0580b552df3242440a10fe60814496a979aa67aa98b1fd47"
url: "https://pub.dev"
source: hosted
version: "4.6.1"
geolocator_apple:
dependency: transitive
description:
name: geolocator_apple
sha256: c4ecead17985ede9634f21500072edfcb3dba0ef7b97f8d7bc556d2d722b3ba3
url: "https://pub.dev"
source: hosted
version: "2.3.9"
geolocator_platform_interface:
dependency: transitive
description:
name: geolocator_platform_interface
sha256: "386ce3d9cce47838355000070b1d0b13efb5bc430f8ecda7e9238c8409ace012"
url: "https://pub.dev"
source: hosted
version: "4.2.4"
geolocator_web:
dependency: transitive
description:
name: geolocator_web
sha256: "2ed69328e05cd94e7eb48bb0535f5fc0c0c44d1c4fa1e9737267484d05c29b5e"
url: "https://pub.dev"
source: hosted
version: "4.1.1"
geolocator_windows:
dependency: transitive
description:
name: geolocator_windows
sha256: "53da08937d07c24b0d9952eb57a3b474e29aae2abf9dd717f7e1230995f13f0e"
url: "https://pub.dev"
source: hosted
version: "0.2.3"
glob: glob:
dependency: transitive dependency: transitive
description: description:
@ -945,10 +1017,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: go_router name: go_router
sha256: "04539267a740931c6d4479a10d466717ca5901c6fdfd3fcda09391bbb8ebd651" sha256: f02fd7d2a4dc512fec615529824fdd217fecb3a3d3de68360293a551f21634b3
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "14.8.0" version: "14.8.1"
google_fonts: google_fonts:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1197,6 +1269,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.9.4" version: "6.9.4"
latlong2:
dependency: transitive
description:
name: latlong2
sha256: "98227922caf49e6056f91b6c56945ea1c7b166f28ffcd5fb8e72fc0b453cc8fe"
url: "https://pub.dev"
source: hosted
version: "0.9.1"
leak_tracker: leak_tracker:
dependency: transitive dependency: transitive
description: description:
@ -1237,6 +1317,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.1.1" version: "5.1.1"
lists:
dependency: transitive
description:
name: lists
sha256: "4ca5c19ae4350de036a7e996cdd1ee39c93ac0a2b840f4915459b7d0a7d4ab27"
url: "https://pub.dev"
source: hosted
version: "1.0.1"
livekit_client: livekit_client:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1253,6 +1341,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.1.6" version: "0.1.6"
logger:
dependency: transitive
description:
name: logger
sha256: be4b23575aac7ebf01f225a241eb7f6b5641eeaf43c6a8613510fc2f8cf187d1
url: "https://pub.dev"
source: hosted
version: "2.5.0"
logging: logging:
dependency: transitive dependency: transitive
description: description:
@ -1389,6 +1485,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.16.0" version: "1.16.0"
mgrs_dart:
dependency: transitive
description:
name: mgrs_dart
sha256: fb89ae62f05fa0bb90f70c31fc870bcbcfd516c843fb554452ab3396f78586f7
url: "https://pub.dev"
source: hosted
version: "2.0.0"
mime: mime:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1605,6 +1709,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.8" version: "2.1.8"
polylabel:
dependency: transitive
description:
name: polylabel
sha256: "41b9099afb2aa6c1730bdd8a0fab1400d287694ec7615dd8516935fa3144214b"
url: "https://pub.dev"
source: hosted
version: "1.0.1"
pool: pool:
dependency: transitive dependency: transitive
description: description:
@ -1629,6 +1741,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.0.1" version: "6.0.1"
proj4dart:
dependency: transitive
description:
name: proj4dart
sha256: c8a659ac9b6864aa47c171e78d41bbe6f5e1d7bd790a5814249e6b68bc44324e
url: "https://pub.dev"
source: hosted
version: "2.1.0"
protobuf: protobuf:
dependency: transitive dependency: transitive
description: description:
@ -2146,6 +2266,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.1.3" version: "0.1.3"
unicode:
dependency: transitive
description:
name: unicode
sha256: "0f69e46593d65245774d4f17125c6084d2c20b4e473a983f6e21b7d7762218f1"
url: "https://pub.dev"
source: hosted
version: "0.3.1"
universal_io: universal_io:
dependency: transitive dependency: transitive
description: description:
@ -2342,10 +2470,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: web name: web
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.0" version: "1.1.1"
web_socket: web_socket:
dependency: transitive dependency: transitive
description: description:
@ -2382,10 +2510,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: win32_registry name: win32_registry
sha256: "21ec76dfc731550fd3e2ce7a33a9ea90b828fdf19a5c3bcf556fa992cfa99852" sha256: "6f1b564492d0147b330dd794fee8f512cec4977957f310f9951b5f9d83618dae"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.5" version: "2.1.0"
wkt_parser:
dependency: transitive
description:
name: wkt_parser
sha256: "8a555fc60de3116c00aad67891bcab20f81a958e4219cc106e3c037aa3937f13"
url: "https://pub.dev"
source: hosted
version: "2.0.0"
workmanager: workmanager:
dependency: "direct main" dependency: "direct main"
description: description:

View File

@ -134,6 +134,9 @@ dependencies:
talker_dio_logger: ^4.6.14 talker_dio_logger: ^4.6.14
talker: ^4.6.14 talker: ^4.6.14
flutter_cache_manager: ^3.4.1 flutter_cache_manager: ^3.4.1
flutter_timezone: ^4.1.0
flutter_map: ^8.1.0
geolocator: ^13.0.2
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
@ -146,8 +149,8 @@ dev_dependencies:
# rules and activating additional ones. # rules and activating additional ones.
flutter_lints: ^5.0.0 flutter_lints: ^5.0.0
build_runner: ^2.4.15 build_runner: ^2.4.15
freezed: ^3.0.1 freezed: ^3.0.2
json_serializable: ^6.8.0 json_serializable: ^6.9.4
icons_launcher: ^3.0.0 icons_launcher: ^3.0.0
flutter_native_splash: ^2.4.2 flutter_native_splash: ^2.4.2
flutter_launcher_icons: ^0.14.1 flutter_launcher_icons: ^0.14.1

View File

@ -12,9 +12,11 @@
#include <file_selector_windows/file_selector_windows.h> #include <file_selector_windows/file_selector_windows.h>
#include <firebase_core/firebase_core_plugin_c_api.h> #include <firebase_core/firebase_core_plugin_c_api.h>
#include <flutter_inappwebview_windows/flutter_inappwebview_windows_plugin_c_api.h> #include <flutter_inappwebview_windows/flutter_inappwebview_windows_plugin_c_api.h>
#include <flutter_timezone/flutter_timezone_plugin_c_api.h>
#include <flutter_udid/flutter_udid_plugin_c_api.h> #include <flutter_udid/flutter_udid_plugin_c_api.h>
#include <flutter_webrtc/flutter_web_r_t_c_plugin.h> #include <flutter_webrtc/flutter_web_r_t_c_plugin.h>
#include <gal/gal_plugin_c_api.h> #include <gal/gal_plugin_c_api.h>
#include <geolocator_windows/geolocator_windows.h>
#include <hotkey_manager_windows/hotkey_manager_windows_plugin_c_api.h> #include <hotkey_manager_windows/hotkey_manager_windows_plugin_c_api.h>
#include <livekit_client/live_kit_plugin.h> #include <livekit_client/live_kit_plugin.h>
#include <local_notifier/local_notifier_plugin.h> #include <local_notifier/local_notifier_plugin.h>
@ -41,12 +43,16 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
registry->GetRegistrarForPlugin("FirebaseCorePluginCApi")); registry->GetRegistrarForPlugin("FirebaseCorePluginCApi"));
FlutterInappwebviewWindowsPluginCApiRegisterWithRegistrar( FlutterInappwebviewWindowsPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FlutterInappwebviewWindowsPluginCApi")); registry->GetRegistrarForPlugin("FlutterInappwebviewWindowsPluginCApi"));
FlutterTimezonePluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FlutterTimezonePluginCApi"));
FlutterUdidPluginCApiRegisterWithRegistrar( FlutterUdidPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FlutterUdidPluginCApi")); registry->GetRegistrarForPlugin("FlutterUdidPluginCApi"));
FlutterWebRTCPluginRegisterWithRegistrar( FlutterWebRTCPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FlutterWebRTCPlugin")); registry->GetRegistrarForPlugin("FlutterWebRTCPlugin"));
GalPluginCApiRegisterWithRegistrar( GalPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("GalPluginCApi")); registry->GetRegistrarForPlugin("GalPluginCApi"));
GeolocatorWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("GeolocatorWindows"));
HotkeyManagerWindowsPluginCApiRegisterWithRegistrar( HotkeyManagerWindowsPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("HotkeyManagerWindowsPluginCApi")); registry->GetRegistrarForPlugin("HotkeyManagerWindowsPluginCApi"));
LiveKitPluginRegisterWithRegistrar( LiveKitPluginRegisterWithRegistrar(

View File

@ -9,9 +9,11 @@ list(APPEND FLUTTER_PLUGIN_LIST
file_selector_windows file_selector_windows
firebase_core firebase_core
flutter_inappwebview_windows flutter_inappwebview_windows
flutter_timezone
flutter_udid flutter_udid
flutter_webrtc flutter_webrtc
gal gal
geolocator_windows
hotkey_manager_windows hotkey_manager_windows
livekit_client livekit_client
local_notifier local_notifier