Skip to content

Commit 64a6847

Browse files
authored
Merge pull request #19 from aNOOBisTheGod/main
Listeners renamed into observers
2 parents a6890b9 + b777722 commit 64a6847

26 files changed

+714
-327
lines changed
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
import 'package:yx_scope/yx_scope.dart';
2+
import './main.dart';
3+
4+
class AppScopeHolderWithListener extends ScopeHolder<AppScopeContainer> {
5+
static const _listener = AppListener();
6+
7+
AppScopeHolderWithListener()
8+
// ignore: deprecated_member_use
9+
: super(scopeListeners: [_listener], depListeners: [_listener]);
10+
11+
@override
12+
AppScopeContainer createContainer() => AppScopeContainer();
13+
}
14+
15+
// ignore: deprecated_member_use
16+
class AppListener implements ScopeListener, DepListener, AsyncDepListener {
17+
const AppListener();
18+
19+
static void _log(
20+
String message, [
21+
Object? exception,
22+
StackTrace? stackTrace,
23+
]) {
24+
print(message);
25+
if (exception != null) {
26+
print(exception);
27+
if (stackTrace != null) {
28+
print(stackTrace);
29+
}
30+
}
31+
}
32+
33+
@override
34+
void onScopeStartInitialize(ScopeId scope) =>
35+
_log('[$scope] -> onScopeStartInitialize');
36+
37+
@override
38+
void onScopeInitialized(ScopeId scope) =>
39+
_log('[$scope] -> onScopeInitialized');
40+
41+
@override
42+
void onScopeInitializeFailed(
43+
ScopeId scope,
44+
Object exception,
45+
StackTrace stackTrace,
46+
) =>
47+
_log('[$scope] -> onScopeInitializeFailed', exception, stackTrace);
48+
49+
@override
50+
void onScopeStartDispose(ScopeId scope) =>
51+
_log('[$scope] -> onScopeStartDispose');
52+
53+
@override
54+
void onScopeDisposed(ScopeId scope) => _log('[$scope] -> onScopeDisposed');
55+
56+
@override
57+
void onScopeDisposeDepFailed(
58+
ScopeId scope,
59+
DepId dep,
60+
Object exception,
61+
StackTrace stackTrace,
62+
) =>
63+
_log('[$scope] -> onScopeDisposeDepFailed', exception, stackTrace);
64+
65+
@override
66+
void onValueStartCreate(ScopeId scope, DepId dep) =>
67+
_log('[$scope.$dep] -> onValueStartCreate');
68+
69+
@override
70+
void onValueCreated(ScopeId scope, DepId dep, ValueMeta? valueMeta) =>
71+
_log('[$scope.$dep] -> onValueCreated');
72+
73+
@override
74+
void onValueCreateFailed(
75+
ScopeId scope,
76+
DepId dep,
77+
Object exception,
78+
StackTrace stackTrace,
79+
) =>
80+
_log('[$scope.$dep] -> onValueCreated', exception, stackTrace);
81+
82+
@override
83+
void onValueCleared(ScopeId scope, DepId dep, ValueMeta? valueMeta) =>
84+
_log('[$scope.$dep]($valueMeta) -> onValueCleared');
85+
86+
@override
87+
void onDepDisposeFailed(
88+
ScopeId scope, DepId dep, Object exception, StackTrace stackTrace) =>
89+
_log('[$scope.$dep] -> onDepDisposeFailed', exception, stackTrace);
90+
91+
@override
92+
void onDepDisposed(ScopeId scope, DepId dep) =>
93+
_log('[$scope.$dep] -> onDepDisposed');
94+
95+
@override
96+
void onDepInitializeFailed(
97+
ScopeId scope, DepId dep, Object exception, StackTrace stackTrace) =>
98+
_log('[$scope.$dep] -> onDepInitializeFailed', exception, stackTrace);
99+
100+
@override
101+
void onDepInitialized(ScopeId scope, DepId dep) =>
102+
_log('[$scope.$dep] -> onDepInitialized');
103+
104+
@override
105+
void onDepStartDispose(ScopeId scope, DepId dep) =>
106+
_log('[$scope.$dep] -> onDepStartDispose');
107+
108+
@override
109+
void onDepStartInitialize(ScopeId scope, DepId dep) =>
110+
_log('[$scope.$dep] -> onDepStartInitialize');
111+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import 'app_listener.dart';
2+
3+
/// This file will be deleted in the next major version
4+
/// when Listeners will be completely removed
5+
void main() async {
6+
final appScopeHolderWithListener = AppScopeHolderWithListener();
7+
8+
await appScopeHolderWithListener.create();
9+
10+
print(appScopeHolderWithListener.scope?.routerDelegateDep.get);
11+
12+
await appScopeHolderWithListener.drop();
13+
14+
print(appScopeHolderWithListener.scope?.routerDelegateDep.get);
15+
}

packages/yx_scope/example/bin/main.dart

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,17 @@ class AppScopeContainer extends ScopeContainer {
3131
}
3232

3333
class AppScopeHolder extends ScopeHolder<AppScopeContainer> {
34-
static const _listener = AppListener();
34+
static const _observer = AppObserver();
3535

3636
AppScopeHolder()
37-
: super(scopeListeners: [_listener], depListeners: [_listener]);
37+
: super(scopeObservers: [_observer], depObservers: [_observer]);
3838

3939
@override
4040
AppScopeContainer createContainer() => AppScopeContainer();
4141
}
4242

43-
class AppListener implements ScopeListener, DepListener {
44-
const AppListener();
43+
class AppObserver implements ScopeObserver, DepObserver, AsyncDepObserver {
44+
const AppObserver();
4545

4646
static void _log(
4747
String message, [
@@ -109,4 +109,30 @@ class AppListener implements ScopeListener, DepListener {
109109
@override
110110
void onValueCleared(ScopeId scope, DepId dep, ValueMeta? valueMeta) =>
111111
_log('[$scope.$dep]($valueMeta) -> onValueCleared');
112+
113+
@override
114+
void onDepDisposeFailed(
115+
ScopeId scope, DepId dep, Object exception, StackTrace stackTrace) =>
116+
_log('[$scope.$dep] -> onDepDisposeFailed', exception, stackTrace);
117+
118+
@override
119+
void onDepDisposed(ScopeId scope, DepId dep) =>
120+
_log('[$scope.$dep] -> onDepDisposed');
121+
122+
@override
123+
void onDepInitializeFailed(
124+
ScopeId scope, DepId dep, Object exception, StackTrace stackTrace) =>
125+
_log('[$scope.$dep] -> onDepInitializeFailed', exception, stackTrace);
126+
127+
@override
128+
void onDepInitialized(ScopeId scope, DepId dep) =>
129+
_log('[$scope.$dep] -> onDepInitialized');
130+
131+
@override
132+
void onDepStartDispose(ScopeId scope, DepId dep) =>
133+
_log('[$scope.$dep] -> onDepStartDispose');
134+
135+
@override
136+
void onDepStartInitialize(ScopeId scope, DepId dep) =>
137+
_log('[$scope.$dep] -> onDepStartInitialize');
112138
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export 'src/monitoring/raw_listeners.dart';
1+
export 'src/monitoring/raw_observers.dart';

packages/yx_scope/lib/src/base_scope_container.dart

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ import 'package:meta/meta.dart';
66
import 'core/async_lifecycle.dart';
77
import 'core/scope_exception.dart';
88
import 'core/scope_state.dart';
9-
import 'monitoring/listeners.dart';
9+
import 'monitoring/observers.dart';
1010
import 'monitoring/models/dep_id.dart';
1111
import 'monitoring/models/scope_id.dart';
1212
import 'monitoring/models/value_meta.dart';
13-
import 'monitoring/raw_listeners.dart';
13+
import 'monitoring/raw_observers.dart';
1414
import 'monitoring/scope_observatory_internal.dart';
1515
import 'scope_container.dart';
1616
import 'scope_state_streamable.dart';
@@ -21,7 +21,7 @@ part 'core_scope_holder.dart';
2121

2222
part 'dep.dart';
2323

24-
part 'monitoring/listeners_internal.dart';
24+
part 'monitoring/observers_internal.dart';
2525

2626
part 'monitoring/models/scope_meta.dart';
2727

@@ -70,15 +70,15 @@ abstract class BaseScopeContainer extends Scope {
7070
final String? _name;
7171
late final ScopeId _id;
7272

73-
late final DepListenerInternal _depListener;
74-
late final AsyncDepListenerInternal _asyncDepListener;
73+
late final DepObserverInternal _depObserver;
74+
late final AsyncDepObserverInternal _asyncDepObserver;
7575

7676
BaseScopeContainer({String? name})
7777
: _name = name,
7878
super._() {
7979
_id = ScopeId(runtimeType, hashCode, _name);
80-
_depListener = DepListenerInternal(this);
81-
_asyncDepListener = AsyncDepListenerInternal(this);
80+
_depObserver = DepObserverInternal(this);
81+
_asyncDepObserver = AsyncDepObserverInternal(this);
8282
}
8383

8484
/// A queue of the initialization for [AsyncDep].
@@ -118,7 +118,7 @@ abstract class BaseScopeContainer extends Scope {
118118
DepBuilder<Value> builder, {
119119
String? name,
120120
}) =>
121-
Dep._(this, builder, name: name, listener: _depListener);
121+
Dep._(this, builder, name: name, observer: _depObserver);
122122

123123
/// Exactly the same as [BaseScopeContainer.dep] but you only allowed
124124
/// to declare [AsyncLifecycle] dependencies using this method.
@@ -160,7 +160,7 @@ abstract class BaseScopeContainer extends Scope {
160160
init: init,
161161
dispose: dispose,
162162
name: name,
163-
listener: _asyncDepListener,
163+
observer: _asyncDepObserver,
164164
);
165165

166166
void _registerDep(Dep dep) => _container.add(dep);

packages/yx_scope/lib/src/core_scope_holder.dart

Lines changed: 37 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,36 @@ part of 'base_scope_container.dart';
88
/// This is the core entity that provides access to the [BaseScopeContainer].
99
abstract class CoreScopeHolder<Scope, Container extends BaseScopeContainer>
1010
extends ScopeStateHolder<Scope?> with ScopeStateStreamable<Scope?> {
11-
final ScopeListenerInternal _scopeListenerInternal;
12-
final List<DepListener>? _depListeners;
13-
final List<AsyncDepListener>? _asyncDepListeners;
11+
final ScopeObserverInternal _scopeObserverInternal;
12+
final List<DepObserver>? _depObservers;
13+
final List<AsyncDepObserver>? _asyncDepObservers;
1414

1515
final _scopeStateHolder = ScopeStateHolder<ScopeState>(ScopeState.none);
1616
Completer? _waitLifecycleCompleter;
1717

1818
ScopeState get _scopeState => _scopeStateHolder.scope;
1919

2020
CoreScopeHolder({
21+
List<ScopeObserver>? scopeObservers,
22+
List<DepObserver>? depObservers,
23+
List<AsyncDepObserver>? asyncDepObservers,
24+
// ignore: deprecated_member_use_from_same_package
25+
@Deprecated('Use scopeObservers instead')
2126
List<ScopeListener>? scopeListeners,
22-
List<DepListener>? depListeners,
27+
// ignore: deprecated_member_use_from_same_package
28+
@Deprecated('Use depObservers instead') List<DepListener>? depListeners,
29+
// ignore: deprecated_member_use_from_same_package
30+
@Deprecated('Use asyncDepObservers instead')
2331
List<AsyncDepListener>? asyncDepListeners,
24-
}) : _scopeListenerInternal = ScopeListenerInternal(scopeListeners),
25-
_depListeners = depListeners,
26-
_asyncDepListeners = asyncDepListeners,
32+
}) : assert(!(scopeListeners != null && scopeObservers != null),
33+
'Both scopeObservers and scopeListeners passed as arguments to ScopeHolder. Consider using only scopeObservers'),
34+
assert(!(depListeners != null && depObservers != null),
35+
'Both depObservers and depListeners passed as arguments to ScopeHolder. Consider using only depObservers'),
36+
assert(!(asyncDepListeners != null && asyncDepObservers != null),
37+
'Both asyncDepObservers and asyncDepListeners passed as arguments to ScopeHolder. Consider using only asyncDepObservers'),
38+
_scopeObserverInternal = ScopeObserverInternal(scopeObservers),
39+
_depObservers = depObservers,
40+
_asyncDepObservers = asyncDepObservers,
2741
super(null);
2842

2943
/// Initialize scope. [Scope] becomes available and everyone can
@@ -116,9 +130,9 @@ abstract class CoreScopeHolder<Scope, Container extends BaseScopeContainer>
116130
break;
117131
}
118132

119-
_prepareListeners(scope);
133+
_prepareObservers(scope);
120134

121-
_scopeListenerInternal.onScopeStartInitialize(scope);
135+
_scopeObserverInternal.onScopeStartInitialize(scope);
122136

123137
_initializing();
124138

@@ -154,13 +168,13 @@ abstract class CoreScopeHolder<Scope, Container extends BaseScopeContainer>
154168
);
155169
}
156170
} on Object catch (e, s) {
157-
_scopeListenerInternal.onScopeInitializeFailed(scope, e, s);
171+
_scopeObserverInternal.onScopeInitializeFailed(scope, e, s);
158172

159173
await _drop(initializedScope: scope, initializedDeps: initialized);
160174
rethrow;
161175
}
162176
_available(scope as Scope);
163-
_scopeListenerInternal.onScopeInitialized(scope);
177+
_scopeObserverInternal.onScopeInitialized(scope);
164178
}
165179

166180
/// Dispose scope. [Scope] becomes unavailable.
@@ -281,7 +295,7 @@ abstract class CoreScopeHolder<Scope, Container extends BaseScopeContainer>
281295
);
282296
}
283297

284-
_scopeListenerInternal.onScopeStartDispose(scope);
298+
_scopeObserverInternal.onScopeStartDispose(scope);
285299

286300
_disposing();
287301

@@ -310,7 +324,7 @@ abstract class CoreScopeHolder<Scope, Container extends BaseScopeContainer>
310324
e,
311325
s,
312326
);
313-
_scopeListenerInternal.onScopeDisposeDepFailed(
327+
_scopeObserverInternal.onScopeDisposeDepFailed(
314328
scope,
315329
dep,
316330
e,
@@ -325,9 +339,9 @@ abstract class CoreScopeHolder<Scope, Container extends BaseScopeContainer>
325339
);
326340
}
327341
scope._unregister();
328-
_clearListeners(scope);
342+
_clearObservers(scope);
329343
await _disposed();
330-
_scopeListenerInternal.onScopeDisposed(scope);
344+
_scopeObserverInternal.onScopeDisposed(scope);
331345
}
332346

333347
// ignore: use_setters_to_change_properties
@@ -358,15 +372,15 @@ abstract class CoreScopeHolder<Scope, Container extends BaseScopeContainer>
358372

359373
void _disposing() => _updateScope(ScopeState.disposing);
360374

361-
void _prepareListeners(Container scope) {
362-
scope._depListener._listeners = _depListeners;
363-
scope._asyncDepListener._listeners = _asyncDepListeners;
364-
scope._asyncDepListener._asyncDepListeners = _asyncDepListeners;
375+
void _prepareObservers(Container scope) {
376+
scope._depObserver._observers = _depObservers;
377+
scope._asyncDepObserver._observers = _asyncDepObservers;
378+
scope._asyncDepObserver._asyncDepObservers = _asyncDepObservers;
365379
}
366380

367-
void _clearListeners(Container scope) {
368-
scope._depListener._listeners = null;
369-
scope._asyncDepListener._listeners = null;
370-
scope._asyncDepListener._asyncDepListeners = null;
381+
void _clearObservers(Container scope) {
382+
scope._depObserver._observers = null;
383+
scope._asyncDepObserver._observers = null;
384+
scope._asyncDepObserver._asyncDepObservers = null;
371385
}
372386
}

0 commit comments

Comments
 (0)