addon store initial

This commit is contained in:
Fabian Freund
2026-04-19 09:15:08 +02:00
parent 57c3dcca86
commit 5bf3afd5e1
23 changed files with 3381 additions and 597 deletions
@@ -27,6 +27,10 @@ part of 'routes.dart';
name: 'AddonDetailsRoute',
path: 'details/:addonId',
),
TypedGoRoute<AddonListingDetailsRoute>(
name: 'AddonListingDetailsRoute',
path: 'listing/:addonId',
),
TypedGoRoute<AddonPermissionsRoute>(
name: 'AddonPermissionsRoute',
path: 'permissions/:addonId',
@@ -57,6 +61,19 @@ class AddonDetailsRoute extends GoRouteData with $AddonDetailsRoute {
}
}
class AddonListingDetailsRoute extends GoRouteData
with $AddonListingDetailsRoute {
final String addonId;
final AddonListing $extra;
const AddonListingDetailsRoute({required this.addonId, required this.$extra});
@override
Widget build(BuildContext context, GoRouterState state) {
return AddonListingDetailsScreen(listing: $extra);
}
}
class AddonPermissionsRoute extends GoRouteData with $AddonPermissionsRoute {
final String addonId;
@@ -30,6 +30,7 @@ import 'package:weblibre/domain/entities/profile.dart';
import 'package:weblibre/features/about/presentation/screens/about.dart';
import 'package:weblibre/features/addons/presentation/screens/addon_details.dart';
import 'package:weblibre/features/addons/presentation/screens/addon_internal_settings.dart';
import 'package:weblibre/features/addons/presentation/screens/addon_listing_details.dart';
import 'package:weblibre/features/addons/presentation/screens/addon_manager.dart';
import 'package:weblibre/features/addons/presentation/screens/addon_permissions.dart';
import 'package:weblibre/features/bangs/data/models/bang.dart';
@@ -942,6 +942,11 @@ RouteBase get $addonManagerRoute => GoRouteData.$route(
name: 'AddonDetailsRoute',
factory: $AddonDetailsRoute._fromState,
),
GoRouteData.$route(
path: 'listing/:addonId',
name: 'AddonListingDetailsRoute',
factory: $AddonListingDetailsRoute._fromState,
),
GoRouteData.$route(
path: 'permissions/:addonId',
name: 'AddonPermissionsRoute',
@@ -1001,6 +1006,36 @@ mixin $AddonDetailsRoute on GoRouteData {
void replace(BuildContext context) => context.replace(location);
}
mixin $AddonListingDetailsRoute on GoRouteData {
static AddonListingDetailsRoute _fromState(GoRouterState state) =>
AddonListingDetailsRoute(
addonId: state.pathParameters['addonId']!,
$extra: state.extra as AddonListing,
);
AddonListingDetailsRoute get _self => this as AddonListingDetailsRoute;
@override
String get location => GoRouteData.$location(
'/addons/listing/${Uri.encodeComponent(_self.addonId)}',
);
@override
void go(BuildContext context) => context.go(location, extra: _self.$extra);
@override
Future<T?> push<T>(BuildContext context) =>
context.push<T>(location, extra: _self.$extra);
@override
void pushReplacement(BuildContext context) =>
context.pushReplacement(location, extra: _self.$extra);
@override
void replace(BuildContext context) =>
context.replace(location, extra: _self.$extra);
}
mixin $AddonPermissionsRoute on GoRouteData {
static AddonPermissionsRoute _fromState(GoRouterState state) =>
AddonPermissionsRoute(addonId: state.pathParameters['addonId']!);