✨ Show robot on profile page
This commit is contained in:
@@ -7,6 +7,7 @@ import 'package:go_router/go_router.dart';
|
||||
import 'package:gap/gap.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:island/models/chat.dart';
|
||||
import 'package:island/models/developer.dart';
|
||||
import 'package:island/models/relationship.dart';
|
||||
import 'package:island/models/account.dart';
|
||||
import 'package:island/pods/config.dart';
|
||||
@@ -112,6 +113,24 @@ Future<SnRelationship?> accountRelationship(Ref ref, String uname) async {
|
||||
}
|
||||
}
|
||||
|
||||
@riverpod
|
||||
Future<SnDeveloper?> accountBotDeveloper(Ref ref, String uname) async {
|
||||
final account = await ref.watch(accountProvider(uname).future);
|
||||
if (account.automatedId == null) return null;
|
||||
final apiClient = ref.watch(apiClientProvider);
|
||||
try {
|
||||
final resp = await apiClient.get(
|
||||
"/develop/bots/${account.automatedId}/developer",
|
||||
);
|
||||
return SnDeveloper.fromJson(resp.data);
|
||||
} catch (err) {
|
||||
if (err is DioException && err.response?.statusCode == 404) {
|
||||
return null;
|
||||
}
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
class AccountProfileScreen extends HookConsumerWidget {
|
||||
final String name;
|
||||
const AccountProfileScreen({super.key, required this.name});
|
||||
@@ -128,6 +147,7 @@ class AccountProfileScreen extends HookConsumerWidget {
|
||||
);
|
||||
final accountChat = ref.watch(accountDirectChatProvider(name));
|
||||
final accountRelationship = ref.watch(accountRelationshipProvider(name));
|
||||
final accountDeveloper = ref.watch(accountBotDeveloperProvider(name));
|
||||
|
||||
final appbarColor = ref.watch(accountAppbarForcegroundColorProvider(name));
|
||||
|
||||
@@ -292,6 +312,19 @@ class AccountProfileScreen extends HookConsumerWidget {
|
||||
),
|
||||
],
|
||||
),
|
||||
if (accountDeveloper.value != null)
|
||||
Row(
|
||||
spacing: 7,
|
||||
children: [
|
||||
const Icon(Symbols.smart_toy, size: 18),
|
||||
Text(
|
||||
'botAutomatedBy'.tr(
|
||||
args: [accountDeveloper.value!.publisher!.nick],
|
||||
),
|
||||
).fontSize(13),
|
||||
],
|
||||
).opacity(0.75),
|
||||
const Gap(4),
|
||||
AccountStatusWidget(uname: name, padding: EdgeInsets.zero),
|
||||
],
|
||||
),
|
||||
|
@@ -639,5 +639,128 @@ class _AccountRelationshipProviderElement
|
||||
String get uname => (origin as AccountRelationshipProvider).uname;
|
||||
}
|
||||
|
||||
String _$accountBotDeveloperHash() =>
|
||||
r'673534770640a8cf1484ea0af0f4d0ef283ef157';
|
||||
|
||||
/// See also [accountBotDeveloper].
|
||||
@ProviderFor(accountBotDeveloper)
|
||||
const accountBotDeveloperProvider = AccountBotDeveloperFamily();
|
||||
|
||||
/// See also [accountBotDeveloper].
|
||||
class AccountBotDeveloperFamily extends Family<AsyncValue<SnDeveloper?>> {
|
||||
/// See also [accountBotDeveloper].
|
||||
const AccountBotDeveloperFamily();
|
||||
|
||||
/// See also [accountBotDeveloper].
|
||||
AccountBotDeveloperProvider call(String uname) {
|
||||
return AccountBotDeveloperProvider(uname);
|
||||
}
|
||||
|
||||
@override
|
||||
AccountBotDeveloperProvider getProviderOverride(
|
||||
covariant AccountBotDeveloperProvider provider,
|
||||
) {
|
||||
return call(provider.uname);
|
||||
}
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _dependencies = null;
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
|
||||
_allTransitiveDependencies;
|
||||
|
||||
@override
|
||||
String? get name => r'accountBotDeveloperProvider';
|
||||
}
|
||||
|
||||
/// See also [accountBotDeveloper].
|
||||
class AccountBotDeveloperProvider
|
||||
extends AutoDisposeFutureProvider<SnDeveloper?> {
|
||||
/// See also [accountBotDeveloper].
|
||||
AccountBotDeveloperProvider(String uname)
|
||||
: this._internal(
|
||||
(ref) => accountBotDeveloper(ref as AccountBotDeveloperRef, uname),
|
||||
from: accountBotDeveloperProvider,
|
||||
name: r'accountBotDeveloperProvider',
|
||||
debugGetCreateSourceHash:
|
||||
const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$accountBotDeveloperHash,
|
||||
dependencies: AccountBotDeveloperFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
AccountBotDeveloperFamily._allTransitiveDependencies,
|
||||
uname: uname,
|
||||
);
|
||||
|
||||
AccountBotDeveloperProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.uname,
|
||||
}) : super.internal();
|
||||
|
||||
final String uname;
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<SnDeveloper?> Function(AccountBotDeveloperRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: AccountBotDeveloperProvider._internal(
|
||||
(ref) => create(ref as AccountBotDeveloperRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
uname: uname,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
AutoDisposeFutureProviderElement<SnDeveloper?> createElement() {
|
||||
return _AccountBotDeveloperProviderElement(this);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is AccountBotDeveloperProvider && other.uname == uname;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, uname.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin AccountBotDeveloperRef on AutoDisposeFutureProviderRef<SnDeveloper?> {
|
||||
/// The parameter `uname` of this provider.
|
||||
String get uname;
|
||||
}
|
||||
|
||||
class _AccountBotDeveloperProviderElement
|
||||
extends AutoDisposeFutureProviderElement<SnDeveloper?>
|
||||
with AccountBotDeveloperRef {
|
||||
_AccountBotDeveloperProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
String get uname => (origin as AccountBotDeveloperProvider).uname;
|
||||
}
|
||||
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
Reference in New Issue
Block a user