Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 19 additions & 11 deletions lib/advert/providers/advert_list_provider.dart
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
import 'package:collection/collection.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:myecl/auth/providers/openid_provider.dart';
import 'package:myecl/advert/class/advert.dart';
import 'package:myecl/advert/repositories/advert_repository.dart';
import 'package:myecl/tools/providers/list_notifier.dart';
import 'package:myecl/tools/token_expire_wrapper.dart';

class AdvertListNotifier extends ListNotifier<Advert> {
AdvertRepository repository = AdvertRepository();
AdvertListNotifier({required String token})
: super(const AsyncValue.loading()) {
repository.setToken(token);
}
final AdvertRepository repository;
AdvertListNotifier(this.repository) : super(const AsyncValue.loading());

Future<AsyncValue<List<Advert>>> loadAdverts() async {
return await loadList(repository.getAllAdvert);
Expand Down Expand Up @@ -41,10 +38,21 @@ class AdvertListNotifier extends ListNotifier<Advert> {

final advertListProvider =
StateNotifierProvider<AdvertListNotifier, AsyncValue<List<Advert>>>((ref) {
final token = ref.watch(tokenProvider);
AdvertListNotifier notifier = AdvertListNotifier(token: token);
tokenExpireWrapperAuth(ref, () async {
await notifier.loadAdverts();
});
final repository = ref.watch(advertRepository);
final notifier = AdvertListNotifier(repository);
tokenExpireWrapperAuth(ref, () => notifier.loadAdverts());
return notifier;
});

final singleAdvertProvider = Provider.family<AsyncValue<Advert?>, String>((
ref,
id,
) {
return ref.watch(
advertListProvider.select((value) {
return value.whenData(
(adverts) => adverts.firstWhereOrNull((advert) => advert.id == id),
);
}),
);
});
14 changes: 0 additions & 14 deletions lib/advert/providers/advert_provider.dart

This file was deleted.

7 changes: 7 additions & 0 deletions lib/advert/repositories/advert_repository.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:myecl/advert/class/advert.dart';
import 'package:myecl/auth/providers/openid_provider.dart';
import 'package:myecl/tools/repository/repository.dart';

class AdvertRepository extends Repository {
Expand Down Expand Up @@ -28,3 +30,8 @@ class AdvertRepository extends Repository {
return await delete("adverts/$id");
}
}

final advertRepository = Provider<AdvertRepository>((ref) {
final token = ref.watch(tokenProvider);
return AdvertRepository()..setToken(token);
});
2 changes: 1 addition & 1 deletion lib/advert/router.dart
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class AdvertRouter {
static const String admin = '/admin';
static const String addEditAdvert = '/add_edit_advert';
static const String addRemAnnouncer = '/add_remove_announcer';
static const String detail = '/detail';
static const String detail = '/:advertId';
static final Module module = Module(
name: "Annonce",
icon: const Left(HeroIcons.megaphone),
Expand Down
6 changes: 1 addition & 5 deletions lib/advert/ui/components/advert_card.dart
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,7 @@ class AdvertCard extends HookConsumerWidget {
final posterNotifier = ref.watch(advertPosterProvider.notifier);
final isWebFormat = ref.watch(isWebFormatProvider);
return GestureDetector(
onTap: () {
if (!isWebFormat) {
onTap();
}
},
onTap: onTap,
child: Container(
margin: const EdgeInsets.all(10),
padding: EdgeInsets.all(isWebFormat ? 50 : 0),
Expand Down
16 changes: 8 additions & 8 deletions lib/advert/ui/pages/admin_page/admin_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,8 @@ import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
import 'package:heroicons/heroicons.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:myecl/advert/class/advert.dart';
import 'package:myecl/advert/providers/advert_list_provider.dart';
import 'package:myecl/advert/providers/advert_posters_provider.dart';
import 'package:myecl/advert/providers/advert_provider.dart';
import 'package:myecl/advert/providers/advert_list_provider.dart';
import 'package:myecl/advert/providers/announcer_list_provider.dart';
import 'package:myecl/advert/providers/announcer_provider.dart';
import 'package:myecl/advert/tools/constants.dart';
Expand All @@ -18,13 +16,13 @@ import 'package:myecl/tools/ui/layouts/card_layout.dart';
import 'package:myecl/tools/ui/layouts/column_refresher.dart';
import 'package:myecl/tools/ui/widgets/custom_dialog_box.dart';
import 'package:qlevar_router/qlevar_router.dart';
import 'package:myecl/tools/functions.dart';

class AdvertAdminPage extends HookConsumerWidget {
const AdvertAdminPage({super.key});

@override
Widget build(BuildContext context, WidgetRef ref) {
final advertNotifier = ref.watch(advertProvider.notifier);
final advertList = ref.watch(advertListProvider);
final userAnnouncerListNotifier = ref.watch(
userAnnouncerListProvider.notifier,
Expand Down Expand Up @@ -72,7 +70,6 @@ class AdvertAdminPage extends HookConsumerWidget {
),
GestureDetector(
onTap: () {
advertNotifier.setAdvert(Advert.empty());
QR.to(
AdvertRouter.root +
AdvertRouter.admin +
Expand Down Expand Up @@ -102,16 +99,19 @@ class AdvertAdminPage extends HookConsumerWidget {
...filteredSortedUserAnnouncerAdverts.map(
(advert) => AdminAdvertCard(
onTap: () {
advertNotifier.setAdvert(advert);
QR.to(AdvertRouter.root + AdvertRouter.detail);
QR.to(
buildPath(AdvertRouter.root + AdvertRouter.detail, [
advert.id,
]),
);
},
onEdit: () {
QR.params.addAsHidden('advertId', advert.id);
QR.to(
AdvertRouter.root +
AdvertRouter.admin +
AdvertRouter.addEditAdvert,
);
advertNotifier.setAdvert(advert);
selectedAnnouncersNotifier.clearAnnouncer();
selectedAnnouncersNotifier.addAnnouncer(advert.announcer);
},
Expand Down
Loading