feat(mobile): shared-links ()

* add shared links page

* feat(mobile): shared link items

* feat(mobile): create / edit shared links page

* server: add changeExpiryTime to SharedLinkEditDto

* fix(mobile): edit expiry to never

* mobile: add icon when shares list is empty

* mobile: create new share from album / timeline

* mobile: add translation texts

* mobile: minor ui fixes

* fix: handle serverURL with /api path

* mobile: show share link on successful creation

* mobile: shared links list - 2 column layout

* mobile: use sharedlink pod class instead of dto

* mobile: show error on link creation

* mobile: show share icon only when remote assets are in selection

* mobile: use server endpoint instead of server url

* styling

* styling

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
This commit is contained in:
shenlong 2023-10-22 15:05:10 +00:00 committed by GitHub
commit 8dcc01b2be
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
24 changed files with 1450 additions and 84 deletions
mobile/lib/routing

View file

@ -320,6 +320,25 @@ class _$AppRouter extends RootStackRouter {
child: const TrashPage(),
);
},
SharedLinkRoute.name: (routeData) {
return MaterialPageX<dynamic>(
routeData: routeData,
child: const SharedLinkPage(),
);
},
SharedLinkEditRoute.name: (routeData) {
final args = routeData.argsAs<SharedLinkEditRouteArgs>(
orElse: () => const SharedLinkEditRouteArgs());
return MaterialPageX<dynamic>(
routeData: routeData,
child: SharedLinkEditPage(
key: args.key,
existingLink: args.existingLink,
assetsList: args.assetsList,
albumId: args.albumId,
),
);
},
HomeRoute.name: (routeData) {
return MaterialPageX<dynamic>(
routeData: routeData,
@ -640,6 +659,22 @@ class _$AppRouter extends RootStackRouter {
duplicateGuard,
],
),
RouteConfig(
SharedLinkRoute.name,
path: '/shared-link-page',
guards: [
authGuard,
duplicateGuard,
],
),
RouteConfig(
SharedLinkEditRoute.name,
path: '/shared-link-edit-page',
guards: [
authGuard,
duplicateGuard,
],
),
];
}
@ -1432,6 +1467,62 @@ class TrashRoute extends PageRouteInfo<void> {
static const String name = 'TrashRoute';
}
/// generated route for
/// [SharedLinkPage]
class SharedLinkRoute extends PageRouteInfo<void> {
const SharedLinkRoute()
: super(
SharedLinkRoute.name,
path: '/shared-link-page',
);
static const String name = 'SharedLinkRoute';
}
/// generated route for
/// [SharedLinkEditPage]
class SharedLinkEditRoute extends PageRouteInfo<SharedLinkEditRouteArgs> {
SharedLinkEditRoute({
Key? key,
SharedLink? existingLink,
List<String>? assetsList,
String? albumId,
}) : super(
SharedLinkEditRoute.name,
path: '/shared-link-edit-page',
args: SharedLinkEditRouteArgs(
key: key,
existingLink: existingLink,
assetsList: assetsList,
albumId: albumId,
),
);
static const String name = 'SharedLinkEditRoute';
}
class SharedLinkEditRouteArgs {
const SharedLinkEditRouteArgs({
this.key,
this.existingLink,
this.assetsList,
this.albumId,
});
final Key? key;
final SharedLink? existingLink;
final List<String>? assetsList;
final String? albumId;
@override
String toString() {
return 'SharedLinkEditRouteArgs{key: $key, existingLink: $existingLink, assetsList: $assetsList, albumId: $albumId}';
}
}
/// generated route for
/// [HomePage]
class HomeRoute extends PageRouteInfo<void> {