Skip to content

Commit 2f2b69d

Browse files
committed
fix: view title update issue
1 parent 448c134 commit 2f2b69d

File tree

11 files changed

+113
-82
lines changed

11 files changed

+113
-82
lines changed

frontend/app_flowy/lib/user/application/user_listener.dart

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,17 @@ import 'package:flowy_sdk/protobuf/flowy-user-data-model/user_profile.pb.dart';
1212
import 'package:flowy_sdk/protobuf/flowy-user/dart_notification.pb.dart' as user;
1313
import 'package:flowy_sdk/rust_stream.dart';
1414

15-
typedef UserProfileDidUpdate = Either<UserProfile, FlowyError>;
16-
typedef AuthDidUpdate = Either<Unit, FlowyError>;
17-
typedef WorkspaceListDidUpdate = Either<List<Workspace>, FlowyError>;
18-
typedef WorkspaceSettingDidUpdate = Either<CurrentWorkspaceSetting, FlowyError>;
15+
typedef UserProfileNotifyValue = Either<UserProfile, FlowyError>;
16+
typedef AuthNotifyValue = Either<Unit, FlowyError>;
17+
typedef WorkspaceListNotifyValue = Either<List<Workspace>, FlowyError>;
18+
typedef WorkspaceSettingNotifyValue = Either<CurrentWorkspaceSetting, FlowyError>;
1919

2020
class UserListener {
2121
StreamSubscription<SubscribeObject>? _subscription;
22-
final _profileNotifier = PublishNotifier<UserProfileDidUpdate>();
23-
final _authNotifier = PublishNotifier<AuthDidUpdate>();
24-
final _workspaceListNotifier = PublishNotifier<WorkspaceListDidUpdate>();
25-
final _workSettingNotifier = PublishNotifier<WorkspaceSettingDidUpdate>();
22+
final _profileNotifier = PublishNotifier<UserProfileNotifyValue>();
23+
final _authNotifier = PublishNotifier<AuthNotifyValue>();
24+
final _workspaceListNotifier = PublishNotifier<WorkspaceListNotifyValue>();
25+
final _workSettingNotifier = PublishNotifier<WorkspaceSettingNotifyValue>();
2626

2727
FolderNotificationParser? _workspaceParser;
2828
UserNotificationParser? _userParser;
@@ -32,32 +32,32 @@ class UserListener {
3232
}) : _user = user;
3333

3434
void start({
35-
void Function(AuthDidUpdate)? authDidChange,
36-
void Function(UserProfileDidUpdate)? profileDidUpdate,
37-
void Function(WorkspaceListDidUpdate)? workspaceListDidUpdate,
38-
void Function(WorkspaceSettingDidUpdate)? workspaceSettingDidUpdate,
35+
void Function(AuthNotifyValue)? onAuthChanged,
36+
void Function(UserProfileNotifyValue)? onProfileUpdated,
37+
void Function(WorkspaceListNotifyValue)? onWorkspaceListUpdated,
38+
void Function(WorkspaceSettingNotifyValue)? onWorkspaceSettingUpdated,
3939
}) {
40-
if (authDidChange != null) {
40+
if (onAuthChanged != null) {
4141
_authNotifier.addListener(() {
42-
authDidChange(_authNotifier.currentValue!);
42+
onAuthChanged(_authNotifier.currentValue!);
4343
});
4444
}
4545

46-
if (profileDidUpdate != null) {
46+
if (onProfileUpdated != null) {
4747
_profileNotifier.addListener(() {
48-
profileDidUpdate(_profileNotifier.currentValue!);
48+
onProfileUpdated(_profileNotifier.currentValue!);
4949
});
5050
}
5151

52-
if (workspaceListDidUpdate != null) {
52+
if (onWorkspaceListUpdated != null) {
5353
_workspaceListNotifier.addListener(() {
54-
workspaceListDidUpdate(_workspaceListNotifier.currentValue!);
54+
onWorkspaceListUpdated(_workspaceListNotifier.currentValue!);
5555
});
5656
}
5757

58-
if (workspaceSettingDidUpdate != null) {
58+
if (onWorkspaceSettingUpdated != null) {
5959
_workSettingNotifier.addListener(() {
60-
workspaceSettingDidUpdate(_workSettingNotifier.currentValue!);
60+
onWorkspaceSettingUpdated(_workSettingNotifier.currentValue!);
6161
});
6262
}
6363

frontend/app_flowy/lib/workspace/application/app/app_bloc.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class AppBloc extends Bloc<AppEvent, AppState> {
4141

4242
void _startListening() {
4343
appListener.start(
44-
viewsChanged: (result) {
44+
onViewsChanged: (result) {
4545
result.fold(
4646
(views) {
4747
if (!isClosed) {
@@ -51,7 +51,7 @@ class AppBloc extends Bloc<AppEvent, AppState> {
5151
(error) => Log.error(error),
5252
);
5353
},
54-
appUpdated: (app) {
54+
onAppUpdated: (app) {
5555
if (!isClosed) {
5656
add(AppEvent.appDidUpdate(app));
5757
}
@@ -97,7 +97,7 @@ class AppBloc extends Bloc<AppEvent, AppState> {
9797

9898
@override
9999
Future<void> close() async {
100-
await appListener.close();
100+
await appListener.stop();
101101
return super.close();
102102
}
103103

frontend/app_flowy/lib/workspace/application/app/app_listener.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ class AppListener {
2424
required this.appId,
2525
});
2626

27-
void start({ViewsDidChangeCallback? viewsChanged, AppDidUpdateCallback? appUpdated}) {
28-
_viewsChanged = viewsChanged;
29-
_updated = appUpdated;
27+
void start({ViewsDidChangeCallback? onViewsChanged, AppDidUpdateCallback? onAppUpdated}) {
28+
_viewsChanged = onViewsChanged;
29+
_updated = onAppUpdated;
3030
_parser = FolderNotificationParser(id: appId, callback: _bservableCallback);
3131
_subscription = RustStreamReceiver.listen((observable) => _parser?.parse(observable));
3232
}
@@ -60,7 +60,7 @@ class AppListener {
6060
}
6161
}
6262

63-
Future<void> close() async {
63+
Future<void> stop() async {
6464
_parser = null;
6565
await _subscription?.cancel();
6666
_viewsChanged = null;

frontend/app_flowy/lib/workspace/application/doc/doc_bloc.dart

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class DocumentBloc extends Bloc<DocumentEvent, DocumentState> {
5959

6060
@override
6161
Future<void> close() async {
62-
await listener.close();
62+
await listener.stop();
6363

6464
if (_subscription != null) {
6565
await _subscription?.cancel();
@@ -70,21 +70,20 @@ class DocumentBloc extends Bloc<DocumentEvent, DocumentState> {
7070
}
7171

7272
Future<void> _initial(Initial value, Emitter<DocumentState> emit) async {
73-
listener.deletedNotifier.addPublishListener((result) {
74-
result.fold(
75-
(view) => add(const DocumentEvent.deleted()),
76-
(error) {},
77-
);
78-
});
79-
80-
listener.restoredNotifier.addPublishListener((result) {
81-
result.fold(
82-
(view) => add(const DocumentEvent.restore()),
83-
(error) {},
84-
);
85-
});
86-
87-
listener.start();
73+
listener.start(
74+
onViewDeleted: (result) {
75+
result.fold(
76+
(view) => add(const DocumentEvent.deleted()),
77+
(error) {},
78+
);
79+
},
80+
onViewRestored: (result) {
81+
result.fold(
82+
(view) => add(const DocumentEvent.restore()),
83+
(error) {},
84+
);
85+
},
86+
);
8887
final result = await service.openDocument(docId: view.id);
8988
result.fold(
9089
(block) {

frontend/app_flowy/lib/workspace/application/home/home_bloc.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ class HomeBloc extends Bloc<HomeEvent, HomeState> {
2020
await event.map(
2121
initial: (_Initial value) {
2222
_listener.start(
23-
authDidChange: (result) {
23+
onAuthChanged: (result) {
2424
_authDidChanged(result);
2525
},
26-
workspaceSettingDidUpdate: (result) {
26+
onWorkspaceSettingUpdated: (result) {
2727
result.fold(
2828
(setting) => add(HomeEvent.didReceiveWorkspaceSetting(setting)),
2929
(r) => Log.error(r),

frontend/app_flowy/lib/workspace/application/menu/menu_user_bloc.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ class MenuUserBloc extends Bloc<MenuUserEvent, MenuUserState> {
2020
await event.map(
2121
initial: (_) async {
2222
userListener.start(
23-
profileDidUpdate: _profileUpdated,
24-
workspaceListDidUpdate: _workspaceListUpdated,
23+
onProfileUpdated: _profileUpdated,
24+
onWorkspaceListUpdated: _workspaceListUpdated,
2525
);
2626
await _initUser();
2727
},

frontend/app_flowy/lib/workspace/application/view/view_bloc.dart

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,27 +21,22 @@ class ViewBloc extends Bloc<ViewEvent, ViewState> {
2121
on<ViewEvent>((event, emit) async {
2222
await event.map(
2323
initial: (e) {
24-
// TODO: Listener can be refactored to a stream.
25-
listener.updatedNotifier.addPublishListener((result) {
26-
// emit.forEach(stream, onData: onData)
24+
listener.start(onViewUpdated: (result) {
2725
add(ViewEvent.viewDidUpdate(result));
2826
});
29-
listener.start();
3027
emit(state);
3128
},
3229
setIsEditing: (e) {
3330
emit(state.copyWith(isEditing: e.isEditing));
3431
},
3532
viewDidUpdate: (e) {
3633
e.result.fold(
37-
(view) =>
38-
emit(state.copyWith(view: view, successOrFailure: left(unit))),
34+
(view) => emit(state.copyWith(view: view, successOrFailure: left(unit))),
3935
(error) => emit(state.copyWith(successOrFailure: right(error))),
4036
);
4137
},
4238
rename: (e) async {
43-
final result =
44-
await service.updateView(viewId: view.id, name: e.newName);
39+
final result = await service.updateView(viewId: view.id, name: e.newName);
4540
emit(
4641
result.fold(
4742
(l) => state.copyWith(successOrFailure: left(unit)),
@@ -74,7 +69,7 @@ class ViewBloc extends Bloc<ViewEvent, ViewState> {
7469

7570
@override
7671
Future<void> close() async {
77-
await listener.close();
72+
await listener.stop();
7873
return super.close();
7974
}
8075
}
@@ -86,8 +81,7 @@ class ViewEvent with _$ViewEvent {
8681
const factory ViewEvent.rename(String newName) = Rename;
8782
const factory ViewEvent.delete() = Delete;
8883
const factory ViewEvent.duplicate() = Duplicate;
89-
const factory ViewEvent.viewDidUpdate(Either<View, FlowyError> result) =
90-
ViewDidUpdate;
84+
const factory ViewEvent.viewDidUpdate(Either<View, FlowyError> result) = ViewDidUpdate;
9185
}
9286

9387
@freezed

frontend/app_flowy/lib/workspace/application/view/view_listener.dart

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,39 @@ typedef RestoreViewNotifiedValue = Either<View, FlowyError>;
1515

1616
class ViewListener {
1717
StreamSubscription<SubscribeObject>? _subscription;
18-
PublishNotifier<UpdateViewNotifiedValue> updatedNotifier = PublishNotifier<UpdateViewNotifiedValue>();
19-
PublishNotifier<DeleteViewNotifyValue> deletedNotifier = PublishNotifier<DeleteViewNotifyValue>();
20-
PublishNotifier<RestoreViewNotifiedValue> restoredNotifier = PublishNotifier<RestoreViewNotifiedValue>();
18+
final PublishNotifier<UpdateViewNotifiedValue> _updatedViewNotifier = PublishNotifier();
19+
final PublishNotifier<DeleteViewNotifyValue> _deletedNotifier = PublishNotifier();
20+
final PublishNotifier<RestoreViewNotifiedValue> _restoredNotifier = PublishNotifier();
2121
FolderNotificationParser? _parser;
2222
View view;
2323

2424
ViewListener({
2525
required this.view,
2626
});
2727

28-
void start() {
28+
void start({
29+
void Function(UpdateViewNotifiedValue)? onViewUpdated,
30+
void Function(DeleteViewNotifyValue)? onViewDeleted,
31+
void Function(RestoreViewNotifiedValue)? onViewRestored,
32+
}) {
33+
if (onViewUpdated != null) {
34+
_updatedViewNotifier.addListener(() {
35+
onViewUpdated(_updatedViewNotifier.currentValue!);
36+
});
37+
}
38+
39+
if (onViewDeleted != null) {
40+
_deletedNotifier.addListener(() {
41+
onViewDeleted(_deletedNotifier.currentValue!);
42+
});
43+
}
44+
45+
if (onViewRestored != null) {
46+
_restoredNotifier.addListener(() {
47+
onViewRestored(_restoredNotifier.currentValue!);
48+
});
49+
}
50+
2951
_parser = FolderNotificationParser(
3052
id: view.id,
3153
callback: (ty, result) {
@@ -40,32 +62,32 @@ class ViewListener {
4062
switch (ty) {
4163
case FolderNotification.ViewUpdated:
4264
result.fold(
43-
(payload) => updatedNotifier.value = left(View.fromBuffer(payload)),
44-
(error) => updatedNotifier.value = right(error),
65+
(payload) => _updatedViewNotifier.value = left(View.fromBuffer(payload)),
66+
(error) => _updatedViewNotifier.value = right(error),
4567
);
4668
break;
4769
case FolderNotification.ViewDeleted:
4870
result.fold(
49-
(payload) => deletedNotifier.value = left(View.fromBuffer(payload)),
50-
(error) => deletedNotifier.value = right(error),
71+
(payload) => _deletedNotifier.value = left(View.fromBuffer(payload)),
72+
(error) => _deletedNotifier.value = right(error),
5173
);
5274
break;
5375
case FolderNotification.ViewRestored:
5476
result.fold(
55-
(payload) => restoredNotifier.value = left(View.fromBuffer(payload)),
56-
(error) => restoredNotifier.value = right(error),
77+
(payload) => _restoredNotifier.value = left(View.fromBuffer(payload)),
78+
(error) => _restoredNotifier.value = right(error),
5779
);
5880
break;
5981
default:
6082
break;
6183
}
6284
}
6385

64-
Future<void> close() async {
86+
Future<void> stop() async {
6587
_parser = null;
6688
await _subscription?.cancel();
67-
updatedNotifier.dispose();
68-
deletedNotifier.dispose();
69-
restoredNotifier.dispose();
89+
_updatedViewNotifier.dispose();
90+
_deletedNotifier.dispose();
91+
_restoredNotifier.dispose();
7092
}
7193
}

frontend/app_flowy/lib/workspace/application/workspace/welcome_bloc.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class WelcomeBloc extends Bloc<WelcomeEvent, WelcomeState> {
1717
(event, emit) async {
1818
await event.map(initial: (e) async {
1919
userListener.start(
20-
workspaceListDidUpdate: (result) => add(WelcomeEvent.workspacesReveived(result)),
20+
onWorkspaceListUpdated: (result) => add(WelcomeEvent.workspacesReveived(result)),
2121
);
2222
//
2323
await _fetchWorkspaces(emit);

frontend/app_flowy/lib/workspace/presentation/plugins/doc/document.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class DocumentPlugin implements Plugin {
6060
DocumentPlugin({required PluginType pluginType, required View view, Key? key}) : _view = view {
6161
_pluginType = pluginType;
6262
_listener = getIt<ViewListener>(param1: view);
63-
_listener?.updatedNotifier.addPublishListener((result) {
63+
_listener?.start(onViewUpdated: (result) {
6464
result.fold(
6565
(newView) {
6666
_view = newView;
@@ -69,12 +69,11 @@ class DocumentPlugin implements Plugin {
6969
(error) {},
7070
);
7171
});
72-
_listener?.start();
7372
}
7473

7574
@override
7675
void dispose() {
77-
_listener?.close();
76+
_listener?.stop();
7877
_listener = null;
7978
}
8079

0 commit comments

Comments
 (0)