Skip to content

Commit

Permalink
feat: added CmsRepo to the CmsConfig
Browse files Browse the repository at this point in the history
  • Loading branch information
vanlooverenkoen committed Jan 15, 2025
1 parent a50c397 commit 909b0ee
Show file tree
Hide file tree
Showing 8 changed files with 70 additions and 38 deletions.
2 changes: 1 addition & 1 deletion .flutter-plugins-dependencies

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
# 0.8.0

## Feat

- BREAKING: Added `CmsRepo` to `CmsConfig`

# 0.7.0

## Feat
Expand Down
31 changes: 3 additions & 28 deletions example/lib/cms/config/user/user_cms_config.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import 'package:flutter/widgets.dart';
import 'package:impaktfull_cms_example/data/user.dart';
import 'package:impaktfull_cms/impaktfull_cms.dart';
import 'package:impaktfull_cms_example/data/user_role.dart';
import 'package:impaktfull_cms_example/repo/user_repo.dart';
import 'package:impaktfull_ui/impaktfull_ui.dart';

enum _UserField {
Expand All @@ -25,6 +24,7 @@ enum _UserHeader {
class UserCmsConfig extends CmsConfig<User, int> {
UserCmsConfig({
required super.cmsNavigator,
required super.repo,
});

@override
Expand Down Expand Up @@ -107,29 +107,6 @@ class UserCmsConfig extends CmsConfig<User, int> {
@override
FutureOr<bool> isAddNewEnabled() => true;

@override
Future<PagingInfo<User>> loadItems({
required int page,
required int pageSize,
}) async =>
UserRepo.instance.getUsers(
page: page,
pageSize: pageSize,
);

@override
Future<User> loadItem(int id) async => UserRepo.instance.getUser(id);

@override
Future<void> deleteItem(User item) async => UserRepo.instance.delete(item);

@override
Future<User> saveItem(User item) async => UserRepo.instance.save(item);

@override
Future<User> updateItem(int id, User item) async =>
UserRepo.instance.update(item);

@override
Widget buildRow({
required User item,
Expand Down Expand Up @@ -157,8 +134,7 @@ class UserCmsConfig extends CmsConfig<User, int> {
email: fields.getStringField(_UserField.email).value ?? '',
phoneNumber: fields.getStringField(_UserField.phoneNumber).value ?? '',
active: fields.getBoolField(_UserField.active).value ?? true,
role:
fields.getReferenceField(_UserField.role).value ?? UserRole.anonymous,
role: fields.getReferenceField(_UserField.role).value ?? UserRole.anonymous,
);
}

Expand All @@ -168,7 +144,6 @@ class UserCmsConfig extends CmsConfig<User, int> {
email: fields.getStringField(_UserField.email).value,
phoneNumber: fields.getStringField(_UserField.phoneNumber).value,
active: fields.getBoolField(_UserField.active).value ?? true,
role: fields.getReferenceField(_UserField.role).value ??
UserRole.anonymous,
role: fields.getReferenceField(_UserField.role).value ?? UserRole.anonymous,
);
}
27 changes: 27 additions & 0 deletions example/lib/cms/repo/user/cms_user_repo.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import 'package:impaktfull_cms/impaktfull_cms.dart';
import 'package:impaktfull_cms_example/data/user.dart';
import 'package:impaktfull_cms_example/repo/user_repo.dart';

class CmsUserRepo extends CmsRepo<User, int> {
@override
Future<PagingInfo<User>> loadAll({
required int page,
required int pageSize,
}) async =>
UserRepo.instance.getUsers(
page: page,
pageSize: pageSize,
);

@override
Future<User> load(int id) async => UserRepo.instance.getUser(id);

@override
Future<void> delete(User item) async => UserRepo.instance.delete(item);

@override
Future<User> save(User item) async => UserRepo.instance.save(item);

@override
Future<User> update(int id, User item) async => UserRepo.instance.update(item);
}
3 changes: 3 additions & 0 deletions example/lib/screen/home_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:impaktfull_cms/impaktfull_cms.dart';
import 'package:impaktfull_cms_example/cms/config/user/user_cms_config.dart';
import 'package:impaktfull_cms_example/cms/navigator/main_cms_navigator.dart';
import 'package:impaktfull_cms_example/cms/repo/user/cms_user_repo.dart';

class HomeScreen extends StatelessWidget {
const HomeScreen({
Expand All @@ -13,10 +14,12 @@ class HomeScreen extends StatelessWidget {
final cmsNavigator = MainCmsNavigator(
navigator: Navigator.of(context),
);
final repo = CmsUserRepo();
return CmsListScreen(
cmsNavigator: cmsNavigator,
config: UserCmsConfig(
cmsNavigator: cmsNavigator,
repo: repo,
),
);
}
Expand Down
5 changes: 3 additions & 2 deletions lib/impaktfull_cms.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@ export 'src/models/data/cms_reference.dart';
export 'src/models/field/cms_field.dart';
export 'src/models/header/cms_header.dart';
export 'src/navigator/cms_navigator.dart';
export 'src/viewmodel/cms_list_viewmodel.dart';
export 'src/viewmodel/cms_add_viewmodel.dart';
export 'src/repo/cms_repo.dart';
export 'src/ui/cms_list_screen.dart';
export 'src/ui/cms_add_screen.dart';
export 'src/ui/cms_edit_screen.dart';
export 'src/ui/cms_details_screen.dart';
export 'src/viewmodel/cms_list_viewmodel.dart';
export 'src/viewmodel/cms_add_viewmodel.dart';
17 changes: 10 additions & 7 deletions lib/src/models/cms_config.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,18 @@ import 'package:impaktfull_cms/src/models/data/paging_info.dart';
import 'package:impaktfull_cms/src/models/field/cms_field.dart';
import 'package:impaktfull_cms/src/models/header/cms_header.dart';
import 'package:impaktfull_cms/src/navigator/cms_navigator.dart';
import 'package:impaktfull_cms/src/repo/cms_repo.dart';

abstract class CmsConfig<T, E> {
final CmsNavigator cmsNavigator;
final CmsRepo<T, E> repo;
final int initialPage;
final int pageSize;
final bool defaultAddNewEnabled;

const CmsConfig({
required this.cmsNavigator,
required this.repo,
this.initialPage = 0,
this.pageSize = 25,
this.defaultAddNewEnabled = true,
Expand All @@ -37,21 +40,21 @@ abstract class CmsConfig<T, E> {

Future<T?> showDetails(T item) => cmsNavigator.showDetails(this, item);

Future<bool?> showDeleteConfirmation(T item) =>
cmsNavigator.showDeleteConfirmation(this, item);
Future<bool?> showDeleteConfirmation(T item) => cmsNavigator.showDeleteConfirmation(this, item);

Future<PagingInfo<T>> loadItems({
required int page,
required int pageSize,
});
}) =>
repo.loadAll(page: page, pageSize: pageSize);

Future<T> loadItem(E id);
Future<T> loadItem(E id) => repo.load(id);

Future<void> deleteItem(T item);
Future<void> deleteItem(T item) => repo.delete(item);

Future<T> saveItem(T item);
Future<T> saveItem(T item) => repo.save(item);

Future<T> updateItem(E id, T item);
Future<T> updateItem(E id, T item) => repo.update(id, item);

FutureOr<bool> isAddNewEnabled() async => defaultAddNewEnabled;

Expand Down
17 changes: 17 additions & 0 deletions lib/src/repo/cms_repo.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import 'package:impaktfull_cms/impaktfull_cms.dart';

///
abstract class CmsRepo<T, E> {
Future<T> save(T item);

Future<T> update(E id, T item);

Future<void> delete(T item);

Future<T> load(E id);

Future<PagingInfo<T>> loadAll({
required int page,
required int pageSize,
});
}

0 comments on commit 909b0ee

Please sign in to comment.