Add service provider (#250)

* optimize android side gradle settings

* android minsdk back to 21

* remove unused package, update linter and fix lint error

* clean code of 'shared module' with offical dart style guide

* restore uploadProfileImage method in UserService

* add service provider

* fix searchFocusNode init error
This commit is contained in:
xpwmaosldk 2022-06-26 03:46:51 +09:00 committed by GitHub
parent 485b152beb
commit d02b97e1c1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
24 changed files with 288 additions and 157 deletions

View file

@ -53,8 +53,10 @@ class AlbumViewerPage extends HookConsumerWidget {
if (returnPayload.selectedAdditionalAsset.isNotEmpty) {
ImmichLoadingOverlayController.appLoader.show();
var isSuccess = await SharedAlbumService().addAdditionalAssetToAlbum(
returnPayload.selectedAdditionalAsset, albumId);
var isSuccess = await ref
.watch(sharedAlbumServiceProvider)
.addAdditionalAssetToAlbum(
returnPayload.selectedAdditionalAsset, albumId);
if (isSuccess) {
ref.refresh(sharedAlbumDetailProvider(albumId));
@ -77,7 +79,8 @@ class AlbumViewerPage extends HookConsumerWidget {
if (sharedUserIds != null) {
ImmichLoadingOverlayController.appLoader.show();
var isSuccess = await SharedAlbumService()
var isSuccess = await ref
.watch(sharedAlbumServiceProvider)
.addAdditionalUserToAlbum(sharedUserIds, albumId);
if (isSuccess) {

View file

@ -16,24 +16,28 @@ class SelectUserForSharingPage extends HookConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final sharedUsersList = useState<Set<User>>({});
AsyncValue<List<User>> suggestedShareUsers = ref.watch(suggestedSharedUsersProvider);
AsyncValue<List<User>> suggestedShareUsers =
ref.watch(suggestedSharedUsersProvider);
_createSharedAlbum() async {
var isSuccess = await SharedAlbumService().createSharedAlbum(
ref.watch(albumTitleProvider),
ref.watch(assetSelectionProvider).selectedNewAssetsForAlbum,
sharedUsersList.value.map((userInfo) => userInfo.id).toList(),
);
var isSuccess =
await ref.watch(sharedAlbumServiceProvider).createSharedAlbum(
ref.watch(albumTitleProvider),
ref.watch(assetSelectionProvider).selectedNewAssetsForAlbum,
sharedUsersList.value.map((userInfo) => userInfo.id).toList(),
);
if (isSuccess) {
await ref.watch(sharedAlbumProvider.notifier).getAllSharedAlbums();
ref.watch(assetSelectionProvider.notifier).removeAll();
ref.watch(albumTitleProvider.notifier).clearAlbumTitle();
AutoRouter.of(context).navigate(const TabControllerRoute(children: [SharingRoute()]));
AutoRouter.of(context)
.navigate(const TabControllerRoute(children: [SharingRoute()]));
}
const ScaffoldMessenger(child: SnackBar(content: Text('Failed to create album')));
const ScaffoldMessenger(
child: SnackBar(content: Text('Failed to create album')));
}
_buildTileIcon(User user) {
@ -47,7 +51,8 @@ class SelectUserForSharingPage extends HookConsumerWidget {
);
} else {
return CircleAvatar(
backgroundImage: const AssetImage('assets/immich-logo-no-outline.png'),
backgroundImage:
const AssetImage('assets/immich-logo-no-outline.png'),
backgroundColor: Theme.of(context).primaryColor.withAlpha(50),
);
}
@ -64,7 +69,10 @@ class SelectUserForSharingPage extends HookConsumerWidget {
backgroundColor: Theme.of(context).primaryColor.withOpacity(0.15),
label: Text(
user.email,
style: const TextStyle(fontSize: 12, color: Colors.black87, fontWeight: FontWeight.bold),
style: const TextStyle(
fontSize: 12,
color: Colors.black87,
fontWeight: FontWeight.bold),
),
),
),
@ -80,7 +88,10 @@ class SelectUserForSharingPage extends HookConsumerWidget {
padding: EdgeInsets.all(16.0),
child: Text(
'Suggestions',
style: TextStyle(fontSize: 14, color: Colors.grey, fontWeight: FontWeight.bold),
style: TextStyle(
fontSize: 14,
color: Colors.grey,
fontWeight: FontWeight.bold),
),
),
ListView.builder(
@ -90,14 +101,20 @@ class SelectUserForSharingPage extends HookConsumerWidget {
leading: _buildTileIcon(users[index]),
title: Text(
users[index].email,
style: const TextStyle(fontSize: 14, fontWeight: FontWeight.bold),
style: const TextStyle(
fontSize: 14, fontWeight: FontWeight.bold),
),
onTap: () {
if (sharedUsersList.value.contains(users[index])) {
sharedUsersList.value =
sharedUsersList.value.where((selectedUser) => selectedUser.id != users[index].id).toSet();
sharedUsersList.value = sharedUsersList.value
.where((selectedUser) =>
selectedUser.id != users[index].id)
.toSet();
} else {
sharedUsersList.value = {...sharedUsersList.value, users[index]};
sharedUsersList.value = {
...sharedUsersList.value,
users[index]
};
}
},
);
@ -124,7 +141,8 @@ class SelectUserForSharingPage extends HookConsumerWidget {
),
actions: [
TextButton(
onPressed: sharedUsersList.value.isEmpty ? null : _createSharedAlbum,
onPressed:
sharedUsersList.value.isEmpty ? null : _createSharedAlbum,
child: const Text(
"Create Album",
style: TextStyle(fontSize: 14, fontWeight: FontWeight.bold),