Refactor: extra bloc name builder fn

This commit is contained in:
Ming Ming 2022-01-27 18:02:45 +08:00
parent 83449fa676
commit c6850b7a2d
8 changed files with 46 additions and 42 deletions

7
lib/bloc/bloc_util.dart Normal file
View file

@ -0,0 +1,7 @@
import 'package:nc_photos/account.dart';
String getInstNameForAccount(String className, Account account) =>
"$className(${account.scheme}://${account.username}@${account.address})";
String getInstNameForRootAwareAccount(String className, Account account) =>
"$className(${account.scheme}://${account.username}@${account.address}?${account.roots.join('&')})";

View file

@ -2,6 +2,7 @@ import 'package:bloc/bloc.dart';
import 'package:kiwi/kiwi.dart'; import 'package:kiwi/kiwi.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:nc_photos/account.dart'; import 'package:nc_photos/account.dart';
import 'package:nc_photos/bloc/bloc_util.dart' as bloc_util;
import 'package:nc_photos/di_container.dart'; import 'package:nc_photos/di_container.dart';
import 'package:nc_photos/entity/album.dart'; import 'package:nc_photos/entity/album.dart';
import 'package:nc_photos/entity/file.dart'; import 'package:nc_photos/entity/file.dart';
@ -141,10 +142,10 @@ class ListAlbumBloc extends Bloc<ListAlbumBlocEvent, ListAlbumBlocState> {
static bool require(DiContainer c) => true; static bool require(DiContainer c) => true;
static ListAlbumBloc of(Account account) { static ListAlbumBloc of(Account account) {
final id = "${account.scheme}://${account.username}@${account.address}"; final name = bloc_util.getInstNameForAccount("ListAlbumBloc", account);
try { try {
_log.fine("[of] Resolving bloc for '$id'"); _log.fine("[of] Resolving bloc for '$name'");
return KiwiContainer().resolve<ListAlbumBloc>("ListAlbumBloc($id)"); return KiwiContainer().resolve<ListAlbumBloc>(name);
} catch (_) { } catch (_) {
// no created instance for this account, make a new one // no created instance for this account, make a new one
_log.info("[of] New bloc instance for account: $account"); _log.info("[of] New bloc instance for account: $account");
@ -154,8 +155,7 @@ class ListAlbumBloc extends Bloc<ListAlbumBlocEvent, ListAlbumBlocState> {
albumRepo: OrNull(AlbumRepo(AlbumAppDbDataSource(c.appDb))), albumRepo: OrNull(AlbumRepo(AlbumAppDbDataSource(c.appDb))),
); );
final bloc = ListAlbumBloc(c, offlineC); final bloc = ListAlbumBloc(c, offlineC);
KiwiContainer() KiwiContainer().registerInstance<ListAlbumBloc>(bloc, name: name);
.registerInstance<ListAlbumBloc>(bloc, name: "ListAlbumBloc($id)");
return bloc; return bloc;
} }
} }

View file

@ -2,6 +2,7 @@ import 'package:bloc/bloc.dart';
import 'package:kiwi/kiwi.dart'; import 'package:kiwi/kiwi.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:nc_photos/account.dart'; import 'package:nc_photos/account.dart';
import 'package:nc_photos/bloc/bloc_util.dart' as bloc_util;
import 'package:nc_photos/entity/person.dart'; import 'package:nc_photos/entity/person.dart';
import 'package:nc_photos/entity/person/data_source.dart'; import 'package:nc_photos/entity/person/data_source.dart';
@ -72,17 +73,15 @@ class ListPersonBloc extends Bloc<ListPersonBlocEvent, ListPersonBlocState> {
ListPersonBloc() : super(ListPersonBlocInit()); ListPersonBloc() : super(ListPersonBlocInit());
static ListPersonBloc of(Account account) { static ListPersonBloc of(Account account) {
final id = final name = bloc_util.getInstNameForAccount("ListPersonBloc", account);
"${account.scheme}://${account.username}@${account.address}?${account.roots.join('&')}";
try { try {
_log.fine("[of] Resolving bloc for '$id'"); _log.fine("[of] Resolving bloc for '$name'");
return KiwiContainer().resolve<ListPersonBloc>("ListPersonBloc($id)"); return KiwiContainer().resolve<ListPersonBloc>(name);
} catch (_) { } catch (_) {
// no created instance for this account, make a new one // no created instance for this account, make a new one
_log.info("[of] New bloc instance for account: $account"); _log.info("[of] New bloc instance for account: $account");
final bloc = ListPersonBloc(); final bloc = ListPersonBloc();
KiwiContainer().registerInstance<ListPersonBloc>(bloc, KiwiContainer().registerInstance<ListPersonBloc>(bloc, name: name);
name: "ListPersonBloc($id)");
return bloc; return bloc;
} }
} }

View file

@ -2,6 +2,7 @@ import 'package:bloc/bloc.dart';
import 'package:kiwi/kiwi.dart'; import 'package:kiwi/kiwi.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:nc_photos/account.dart'; import 'package:nc_photos/account.dart';
import 'package:nc_photos/bloc/bloc_util.dart' as bloc_util;
import 'package:nc_photos/entity/sharee.dart'; import 'package:nc_photos/entity/sharee.dart';
import 'package:nc_photos/entity/sharee/data_source.dart'; import 'package:nc_photos/entity/sharee/data_source.dart';
@ -72,16 +73,15 @@ class ListShareeBloc extends Bloc<ListShareeBlocEvent, ListShareeBlocState> {
ListShareeBloc() : super(ListShareeBlocInit()); ListShareeBloc() : super(ListShareeBlocInit());
static ListShareeBloc of(Account account) { static ListShareeBloc of(Account account) {
final id = "${account.scheme}://${account.username}@${account.address}"; final name = bloc_util.getInstNameForAccount("ListShareeBloc", account);
try { try {
_log.fine("[of] Resolving bloc for '$id'"); _log.fine("[of] Resolving bloc for '$name'");
return KiwiContainer().resolve<ListShareeBloc>("ListShareeBloc($id)"); return KiwiContainer().resolve<ListShareeBloc>(name);
} catch (_) { } catch (_) {
// no created instance for this account, make a new one // no created instance for this account, make a new one
_log.info("[of] New bloc instance for account: $account"); _log.info("[of] New bloc instance for account: $account");
final bloc = ListShareeBloc(); final bloc = ListShareeBloc();
KiwiContainer() KiwiContainer().registerInstance<ListShareeBloc>(bloc, name: name);
.registerInstance<ListShareeBloc>(bloc, name: "ListShareeBloc($id)");
return bloc; return bloc;
} }
} }

View file

@ -2,6 +2,7 @@ import 'package:bloc/bloc.dart';
import 'package:kiwi/kiwi.dart'; import 'package:kiwi/kiwi.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:nc_photos/account.dart'; import 'package:nc_photos/account.dart';
import 'package:nc_photos/bloc/bloc_util.dart' as bloc_util;
import 'package:nc_photos/di_container.dart'; import 'package:nc_photos/di_container.dart';
import 'package:nc_photos/entity/album.dart'; import 'package:nc_photos/entity/album.dart';
import 'package:nc_photos/entity/file.dart'; import 'package:nc_photos/entity/file.dart';
@ -173,17 +174,16 @@ class ListSharingBloc extends Bloc<ListSharingBlocEvent, ListSharingBlocState> {
DiContainer.has(c, DiType.shareRepo); DiContainer.has(c, DiType.shareRepo);
static ListSharingBloc of(Account account) { static ListSharingBloc of(Account account) {
final id = final name =
"${account.scheme}://${account.username}@${account.address}?${account.roots.join('&')}"; bloc_util.getInstNameForRootAwareAccount("ListSharingBloc", account);
try { try {
_log.fine("[of] Resolving bloc for '$id'"); _log.fine("[of] Resolving bloc for '$name'");
return KiwiContainer().resolve<ListSharingBloc>("ListSharingBloc($id)"); return KiwiContainer().resolve<ListSharingBloc>(name);
} catch (_) { } catch (_) {
// no created instance for this account, make a new one // no created instance for this account, make a new one
_log.info("[of] New bloc instance for account: $account"); _log.info("[of] New bloc instance for account: $account");
final bloc = ListSharingBloc(KiwiContainer().resolve<DiContainer>()); final bloc = ListSharingBloc(KiwiContainer().resolve<DiContainer>());
KiwiContainer().registerInstance<ListSharingBloc>(bloc, KiwiContainer().registerInstance<ListSharingBloc>(bloc, name: name);
name: "ListSharingBloc($id)");
return bloc; return bloc;
} }
} }

View file

@ -2,6 +2,7 @@ import 'package:bloc/bloc.dart';
import 'package:kiwi/kiwi.dart'; import 'package:kiwi/kiwi.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:nc_photos/account.dart'; import 'package:nc_photos/account.dart';
import 'package:nc_photos/bloc/bloc_util.dart' as bloc_util;
import 'package:nc_photos/entity/file.dart'; import 'package:nc_photos/entity/file.dart';
import 'package:nc_photos/entity/file/data_source.dart'; import 'package:nc_photos/entity/file/data_source.dart';
import 'package:nc_photos/entity/file_util.dart' as file_util; import 'package:nc_photos/entity/file_util.dart' as file_util;
@ -108,16 +109,15 @@ class LsTrashbinBloc extends Bloc<LsTrashbinBlocEvent, LsTrashbinBlocState> {
} }
static LsTrashbinBloc of(Account account) { static LsTrashbinBloc of(Account account) {
final id = "${account.scheme}://${account.username}@${account.address}"; final name = bloc_util.getInstNameForAccount("LsTrashbinBloc", account);
try { try {
_log.fine("[of] Resolving bloc for '$id'"); _log.fine("[of] Resolving bloc for '$name'");
return KiwiContainer().resolve<LsTrashbinBloc>("LsTrashbinBloc($id)"); return KiwiContainer().resolve<LsTrashbinBloc>(name);
} catch (_) { } catch (_) {
// no created instance for this account, make a new one // no created instance for this account, make a new one
_log.info("[of] New bloc instance for account: $account"); _log.info("[of] New bloc instance for account: $account");
final bloc = LsTrashbinBloc(); final bloc = LsTrashbinBloc();
KiwiContainer() KiwiContainer().registerInstance<LsTrashbinBloc>(bloc, name: name);
.registerInstance<LsTrashbinBloc>(bloc, name: "LsTrashbinBloc($id)");
return bloc; return bloc;
} }
} }

View file

@ -5,6 +5,7 @@ import 'package:kiwi/kiwi.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:nc_photos/account.dart'; import 'package:nc_photos/account.dart';
import 'package:nc_photos/app_db.dart'; import 'package:nc_photos/app_db.dart';
import 'package:nc_photos/bloc/bloc_util.dart' as bloc_util;
import 'package:nc_photos/debug_util.dart'; import 'package:nc_photos/debug_util.dart';
import 'package:nc_photos/di_container.dart'; import 'package:nc_photos/di_container.dart';
import 'package:nc_photos/entity/file.dart'; import 'package:nc_photos/entity/file.dart';
@ -113,18 +114,16 @@ class ScanAccountDirBloc
} }
static ScanAccountDirBloc of(Account account) { static ScanAccountDirBloc of(Account account) {
final id = final name =
"${account.scheme}://${account.username}@${account.address}?${account.roots.join('&')}"; bloc_util.getInstNameForRootAwareAccount("ScanAccountDirBloc", account);
try { try {
_log.fine("[of] Resolving bloc for '$id'"); _log.fine("[of] Resolving bloc for '$name'");
return KiwiContainer() return KiwiContainer().resolve<ScanAccountDirBloc>(name);
.resolve<ScanAccountDirBloc>("ScanAccountDirBloc($id)");
} catch (_) { } catch (_) {
// no created instance for this account, make a new one // no created instance for this account, make a new one
_log.info("[of] New bloc instance for account: $account"); _log.info("[of] New bloc instance for account: $account");
final bloc = ScanAccountDirBloc._(account); final bloc = ScanAccountDirBloc._(account);
KiwiContainer().registerInstance<ScanAccountDirBloc>(bloc, KiwiContainer().registerInstance<ScanAccountDirBloc>(bloc, name: name);
name: "ScanAccountDirBloc($id)");
return bloc; return bloc;
} }
} }

View file

@ -9,6 +9,7 @@ import 'package:logging/logging.dart';
import 'package:nc_photos/account.dart'; import 'package:nc_photos/account.dart';
import 'package:nc_photos/api/api_util.dart' as api_util; import 'package:nc_photos/api/api_util.dart' as api_util;
import 'package:nc_photos/app_localizations.dart'; import 'package:nc_photos/app_localizations.dart';
import 'package:nc_photos/bloc/bloc_util.dart' as bloc_util;
import 'package:nc_photos/bloc/scan_account_dir.dart'; import 'package:nc_photos/bloc/scan_account_dir.dart';
import 'package:nc_photos/di_container.dart'; import 'package:nc_photos/di_container.dart';
import 'package:nc_photos/download_handler.dart'; import 'package:nc_photos/download_handler.dart';
@ -638,18 +639,16 @@ class _HomePhotosState extends State<HomePhotos>
} }
Primitive<bool> get _hasFiredMetadataTask { Primitive<bool> get _hasFiredMetadataTask {
final blocId = final name = bloc_util.getInstNameForRootAwareAccount(
"${widget.account.scheme}://${widget.account.username}@${widget.account.address}"; "HomePhotosState.hasFiredMetadataTask", widget.account);
try { try {
_log.fine("[_hasFiredMetadataTask] Resolving bloc for '$blocId'"); _log.fine("[_hasFiredMetadataTask] Resolving for '$name'");
return KiwiContainer().resolve<Primitive<bool>>( return KiwiContainer().resolve<Primitive<bool>>(name);
"HomePhotosState.hasFiredMetadataTask($blocId)");
} catch (_) { } catch (_) {
_log.info( _log.info(
"[_hasFiredMetadataTask] New bloc instance for account: ${widget.account}"); "[_hasFiredMetadataTask] New instance for account: ${widget.account}");
final obj = Primitive(false); final obj = Primitive(false);
KiwiContainer().registerInstance<Primitive<bool>>(obj, KiwiContainer().registerInstance<Primitive<bool>>(obj, name: name);
name: "HomePhotosState.hasFiredMetadataTask($blocId)");
return obj; return obj;
} }
} }