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:
@ -1,28 +1,28 @@
|
|||||||
|
import 'dart:async';
|
||||||
import 'dart:convert';
|
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/board/mobile_board_screen.dart';
|
||||||
import 'package:appflowy/mobile/presentation/database/mobile_calendar_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/database/mobile_grid_screen.dart';
|
||||||
import 'package:appflowy/mobile/presentation/presentation.dart';
|
import 'package:appflowy/mobile/presentation/presentation.dart';
|
||||||
import 'package:appflowy/startup/startup.dart';
|
import 'package:appflowy/startup/startup.dart';
|
||||||
import 'package:appflowy/workspace/application/recent/cached_recent_service.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:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
import 'package:go_router/go_router.dart';
|
import 'package:go_router/go_router.dart';
|
||||||
|
|
||||||
extension MobileRouter on BuildContext {
|
extension MobileRouter on BuildContext {
|
||||||
Future<void> pushView(ViewPB view, [Map<String, dynamic>? arguments]) async {
|
Future<void> pushView(ViewPB view, [Map<String, dynamic>? arguments]) async {
|
||||||
await push(
|
// set the current view before pushing the new view
|
||||||
Uri(
|
getIt<MenuSharedState>().latestOpenView = view;
|
||||||
path: view.routeName,
|
unawaited(getIt<CachedRecentService>().updateRecentViews([view.id], true));
|
||||||
queryParameters: view.queryParameters(arguments),
|
|
||||||
).toString(),
|
final uri = Uri(
|
||||||
).then((value) {
|
path: view.routeName,
|
||||||
getIt<MenuSharedState>().latestOpenView = view;
|
queryParameters: view.queryParameters(arguments),
|
||||||
getIt<CachedRecentService>().updateRecentViews([view.id], true);
|
).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/application/user/user_workspace_bloc.dart';
|
||||||
import 'package:appflowy/workspace/presentation/home/errors/workspace_failed_screen.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/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/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-folder/workspace.pb.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-user/protobuf.dart';
|
import 'package:appflowy_backend/protobuf/flowy-user/protobuf.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@ -69,7 +71,7 @@ class MobileHomeScreen extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class MobileHomePage extends StatelessWidget {
|
class MobileHomePage extends StatefulWidget {
|
||||||
const MobileHomePage({
|
const MobileHomePage({
|
||||||
super.key,
|
super.key,
|
||||||
required this.userProfile,
|
required this.userProfile,
|
||||||
@ -79,15 +81,31 @@ class MobileHomePage extends StatelessWidget {
|
|||||||
final UserProfilePB userProfile;
|
final UserProfilePB userProfile;
|
||||||
final WorkspaceSettingPB workspaceSetting;
|
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
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MultiBlocProvider(
|
return MultiBlocProvider(
|
||||||
providers: [
|
providers: [
|
||||||
BlocProvider(
|
BlocProvider(
|
||||||
create: (_) => UserWorkspaceBloc(userProfile: userProfile)
|
create: (_) => UserWorkspaceBloc(userProfile: widget.userProfile)
|
||||||
..add(
|
..add(const UserWorkspaceEvent.initial()),
|
||||||
const UserWorkspaceEvent.initial(),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
BlocProvider(
|
BlocProvider(
|
||||||
create: (context) =>
|
create: (context) =>
|
||||||
@ -114,7 +132,7 @@ class MobileHomePage extends StatelessWidget {
|
|||||||
top: Platform.isAndroid ? 8.0 : 0.0,
|
top: Platform.isAndroid ? 8.0 : 0.0,
|
||||||
),
|
),
|
||||||
child: MobileHomePageHeader(
|
child: MobileHomePageHeader(
|
||||||
userProfile: userProfile,
|
userProfile: widget.userProfile,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
@ -123,7 +141,7 @@ class MobileHomePage extends StatelessWidget {
|
|||||||
create: (context) =>
|
create: (context) =>
|
||||||
SpaceOrderBloc()..add(const SpaceOrderEvent.initial()),
|
SpaceOrderBloc()..add(const SpaceOrderEvent.initial()),
|
||||||
child: MobileSpaceTab(
|
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 addLatestViewListener(VoidCallback listener) {
|
||||||
void listener() {
|
|
||||||
callback(_latestOpenView.value);
|
|
||||||
}
|
|
||||||
|
|
||||||
_latestOpenView.addListener(listener);
|
_latestOpenView.addListener(listener);
|
||||||
return listener;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void removeLatestViewListener(VoidCallback 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 {
|
pub extern "C" fn set_log_stream_port(port: i64) -> i32 {
|
||||||
*LOG_STREAM_ISOLATE.lock() = Some(Isolate::new(port));
|
*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
|
0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user