mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
chore: call FolderEventSetLatestView when opening page on mobile (#5447)
* fix: call FolderEventSetLatestView when opening page on mobile * chore: remove unused log
This commit is contained in:
parent
4ad7c48b25
commit
2a59579c17
@ -1,28 +1,28 @@
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:appflowy/workspace/presentation/home/menu/menu_shared_state.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:appflowy/mobile/presentation/database/board/mobile_board_screen.dart';
|
||||
import 'package:appflowy/mobile/presentation/database/mobile_calendar_screen.dart';
|
||||
import 'package:appflowy/mobile/presentation/database/mobile_grid_screen.dart';
|
||||
import 'package:appflowy/mobile/presentation/presentation.dart';
|
||||
import 'package:appflowy/startup/startup.dart';
|
||||
import 'package:appflowy/workspace/application/recent/cached_recent_service.dart';
|
||||
import 'package:appflowy/workspace/presentation/home/menu/menu_shared_state.dart';
|
||||
import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
|
||||
extension MobileRouter on BuildContext {
|
||||
Future<void> pushView(ViewPB view, [Map<String, dynamic>? arguments]) async {
|
||||
await push(
|
||||
Uri(
|
||||
path: view.routeName,
|
||||
queryParameters: view.queryParameters(arguments),
|
||||
).toString(),
|
||||
).then((value) {
|
||||
getIt<MenuSharedState>().latestOpenView = view;
|
||||
getIt<CachedRecentService>().updateRecentViews([view.id], true);
|
||||
});
|
||||
// set the current view before pushing the new view
|
||||
getIt<MenuSharedState>().latestOpenView = view;
|
||||
unawaited(getIt<CachedRecentService>().updateRecentViews([view.id], true));
|
||||
|
||||
final uri = Uri(
|
||||
path: view.routeName,
|
||||
queryParameters: view.queryParameters(arguments),
|
||||
).toString();
|
||||
await push(uri);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -10,7 +10,9 @@ import 'package:appflowy/workspace/application/recent/cached_recent_service.dart
|
||||
import 'package:appflowy/workspace/application/user/user_workspace_bloc.dart';
|
||||
import 'package:appflowy/workspace/presentation/home/errors/workspace_failed_screen.dart';
|
||||
import 'package:appflowy/workspace/presentation/home/home_sizes.dart';
|
||||
import 'package:appflowy/workspace/presentation/home/menu/menu_shared_state.dart';
|
||||
import 'package:appflowy_backend/dispatch/dispatch.dart';
|
||||
import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
|
||||
import 'package:appflowy_backend/protobuf/flowy-folder/workspace.pb.dart';
|
||||
import 'package:appflowy_backend/protobuf/flowy-user/protobuf.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@ -69,7 +71,7 @@ class MobileHomeScreen extends StatelessWidget {
|
||||
}
|
||||
}
|
||||
|
||||
class MobileHomePage extends StatelessWidget {
|
||||
class MobileHomePage extends StatefulWidget {
|
||||
const MobileHomePage({
|
||||
super.key,
|
||||
required this.userProfile,
|
||||
@ -79,15 +81,31 @@ class MobileHomePage extends StatelessWidget {
|
||||
final UserProfilePB userProfile;
|
||||
final WorkspaceSettingPB workspaceSetting;
|
||||
|
||||
@override
|
||||
State<MobileHomePage> createState() => _MobileHomePageState();
|
||||
}
|
||||
|
||||
class _MobileHomePageState extends State<MobileHomePage> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
getIt<MenuSharedState>().addLatestViewListener(_onLatestViewChange);
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
getIt<MenuSharedState>().removeLatestViewListener(_onLatestViewChange);
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MultiBlocProvider(
|
||||
providers: [
|
||||
BlocProvider(
|
||||
create: (_) => UserWorkspaceBloc(userProfile: userProfile)
|
||||
..add(
|
||||
const UserWorkspaceEvent.initial(),
|
||||
),
|
||||
create: (_) => UserWorkspaceBloc(userProfile: widget.userProfile)
|
||||
..add(const UserWorkspaceEvent.initial()),
|
||||
),
|
||||
BlocProvider(
|
||||
create: (context) =>
|
||||
@ -114,7 +132,7 @@ class MobileHomePage extends StatelessWidget {
|
||||
top: Platform.isAndroid ? 8.0 : 0.0,
|
||||
),
|
||||
child: MobileHomePageHeader(
|
||||
userProfile: userProfile,
|
||||
userProfile: widget.userProfile,
|
||||
),
|
||||
),
|
||||
|
||||
@ -123,7 +141,7 @@ class MobileHomePage extends StatelessWidget {
|
||||
create: (context) =>
|
||||
SpaceOrderBloc()..add(const SpaceOrderEvent.initial()),
|
||||
child: MobileSpaceTab(
|
||||
userProfile: userProfile,
|
||||
userProfile: widget.userProfile,
|
||||
),
|
||||
),
|
||||
),
|
||||
@ -133,4 +151,12 @@ class MobileHomePage extends StatelessWidget {
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void _onLatestViewChange() async {
|
||||
final id = getIt<MenuSharedState>().latestOpenView?.id;
|
||||
if (id == null) {
|
||||
return;
|
||||
}
|
||||
await FolderEventSetLatestView(ViewIdPB(value: id)).send();
|
||||
}
|
||||
}
|
||||
|
@ -17,13 +17,8 @@ class MenuSharedState {
|
||||
}
|
||||
}
|
||||
|
||||
VoidCallback addLatestViewListener(void Function(ViewPB?) callback) {
|
||||
void listener() {
|
||||
callback(_latestOpenView.value);
|
||||
}
|
||||
|
||||
void addLatestViewListener(VoidCallback listener) {
|
||||
_latestOpenView.addListener(listener);
|
||||
return listener;
|
||||
}
|
||||
|
||||
void removeLatestViewListener(VoidCallback listener) {
|
||||
|
@ -169,12 +169,6 @@ pub extern "C" fn set_stream_port(notification_port: i64) -> i32 {
|
||||
pub extern "C" fn set_log_stream_port(port: i64) -> i32 {
|
||||
*LOG_STREAM_ISOLATE.lock() = Some(Isolate::new(port));
|
||||
|
||||
LOG_STREAM_ISOLATE
|
||||
.lock()
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.post("hello log".to_string().as_bytes().to_vec());
|
||||
|
||||
0
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user