💄 Optimized fortune saying and dashboard clock
This commit is contained in:
@@ -8,6 +8,7 @@ import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:gap/gap.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:island/models/activity.dart';
|
||||
import 'package:island/models/fortune.dart';
|
||||
import 'package:island/pods/network.dart';
|
||||
import 'package:island/pods/userinfo.dart';
|
||||
import 'package:island/screens/auth/captcha.dart';
|
||||
@@ -42,12 +43,50 @@ Future<SnNotableDay?> nextNotableDay(Ref ref) async {
|
||||
final client = ref.watch(apiClientProvider);
|
||||
try {
|
||||
final resp = await client.get('/pass/notable/me/next');
|
||||
return SnNotableDay.fromJson(resp.data);
|
||||
final day = SnNotableDay.fromJson(resp.data);
|
||||
if (day.localizableKey != null) {
|
||||
final key = 'notableDay${day.localizableKey}';
|
||||
if (key.trExists()) {
|
||||
return day.copyWith(
|
||||
localName: key.tr(),
|
||||
date: day.date.toLocal().copyWith(hour: 0, second: 0),
|
||||
);
|
||||
}
|
||||
}
|
||||
return day.copyWith(date: day.date.toLocal().copyWith(hour: 0, second: 0));
|
||||
} catch (err) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@riverpod
|
||||
Future<SnNotableDay?> recentNotableDay(Ref ref) async {
|
||||
final client = ref.watch(apiClientProvider);
|
||||
try {
|
||||
final resp = await client.get('/pass/notable/me/recent');
|
||||
final day = SnNotableDay.fromJson(resp.data[0]);
|
||||
if (day.localizableKey != null) {
|
||||
final key = 'notableDay${day.localizableKey}';
|
||||
if (key.trExists()) {
|
||||
return day.copyWith(
|
||||
localName: key.tr(),
|
||||
date: day.date.toLocal().copyWith(hour: 0, second: 0),
|
||||
);
|
||||
}
|
||||
}
|
||||
return day.copyWith(date: day.date.toLocal().copyWith(hour: 0, second: 0));
|
||||
} catch (err) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@riverpod
|
||||
Future<SnFortuneSaying> randomFortuneSaying(Ref ref) async {
|
||||
final client = ref.watch(apiClientProvider);
|
||||
final resp = await client.get('/pass/fortune/random');
|
||||
return SnFortuneSaying.fromJson(resp.data[0]);
|
||||
}
|
||||
|
||||
class CheckInWidget extends HookConsumerWidget {
|
||||
final EdgeInsets? margin;
|
||||
final VoidCallback? onChecked;
|
||||
|
||||
@@ -86,4 +86,83 @@ final class NextNotableDayProvider
|
||||
}
|
||||
}
|
||||
|
||||
String _$nextNotableDayHash() => r'c8404308f6b0f581cc7df251bce8f3c5ac130245';
|
||||
String _$nextNotableDayHash() => r'60d0546a086bdcb89c433c38133eb4197e4fb0a6';
|
||||
|
||||
@ProviderFor(recentNotableDay)
|
||||
const recentNotableDayProvider = RecentNotableDayProvider._();
|
||||
|
||||
final class RecentNotableDayProvider
|
||||
extends
|
||||
$FunctionalProvider<
|
||||
AsyncValue<SnNotableDay?>,
|
||||
SnNotableDay?,
|
||||
FutureOr<SnNotableDay?>
|
||||
>
|
||||
with $FutureModifier<SnNotableDay?>, $FutureProvider<SnNotableDay?> {
|
||||
const RecentNotableDayProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'recentNotableDayProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$recentNotableDayHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
$FutureProviderElement<SnNotableDay?> $createElement(
|
||||
$ProviderPointer pointer,
|
||||
) => $FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FutureOr<SnNotableDay?> create(Ref ref) {
|
||||
return recentNotableDay(ref);
|
||||
}
|
||||
}
|
||||
|
||||
String _$recentNotableDayHash() => r'780d0f0747d753c5d535d9c2413f8e68d457d974';
|
||||
|
||||
@ProviderFor(randomFortuneSaying)
|
||||
const randomFortuneSayingProvider = RandomFortuneSayingProvider._();
|
||||
|
||||
final class RandomFortuneSayingProvider
|
||||
extends
|
||||
$FunctionalProvider<
|
||||
AsyncValue<SnFortuneSaying>,
|
||||
SnFortuneSaying,
|
||||
FutureOr<SnFortuneSaying>
|
||||
>
|
||||
with $FutureModifier<SnFortuneSaying>, $FutureProvider<SnFortuneSaying> {
|
||||
const RandomFortuneSayingProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'randomFortuneSayingProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$randomFortuneSayingHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
$FutureProviderElement<SnFortuneSaying> $createElement(
|
||||
$ProviderPointer pointer,
|
||||
) => $FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FutureOr<SnFortuneSaying> create(Ref ref) {
|
||||
return randomFortuneSaying(ref);
|
||||
}
|
||||
}
|
||||
|
||||
String _$randomFortuneSayingHash() =>
|
||||
r'861378dba8021e8555b568fb8e0390b2b24056f6';
|
||||
|
||||
Reference in New Issue
Block a user