feat: 1674 Auto-hide sidebar when re-sizing the window (#3659)

* feat: 1674 Auto-hide sidebar when re-sizing the window

* chore: removed unnecessary print statements

* chore: updated to a more approprite name for 'screenSmall' event
This commit is contained in:
Shreesh Nautiyal 2023-10-10 22:56:11 +05:30 committed by GitHub
parent 77e7cbe9ec
commit 98e0b832ec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 1 deletions

View File

@ -5,6 +5,7 @@ import 'package:appflowy_backend/protobuf/flowy-folder2/workspace.pb.dart'
show WorkspaceSettingPB;
import 'package:appflowy_backend/protobuf/flowy-user/user_profile.pb.dart';
import 'package:dartz/dartz.dart';
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra/time/duration.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
@ -43,7 +44,28 @@ class HomeSettingBloc extends Bloc<HomeSettingEvent, HomeSettingState> {
collapseMenu: (_CollapseMenu e) {
final isMenuCollapsed = !state.isMenuCollapsed;
_appearanceSettingsCubit.saveIsMenuCollapsed(isMenuCollapsed);
emit(state.copyWith(isMenuCollapsed: isMenuCollapsed));
emit(
state.copyWith(
isMenuCollapsed: isMenuCollapsed,
keepMenuCollapsed: isMenuCollapsed,
),
);
},
checkScreenSize: (_CheckScreenSize e) {
final bool isScreenSmall =
e.screenWidthPx < PageBreaks.tabletLandscape;
if (state.isScreenSmall != isScreenSmall) {
final isMenuCollapsed = isScreenSmall || state.keepMenuCollapsed;
emit(
state.copyWith(
isMenuCollapsed: isMenuCollapsed,
isScreenSmall: isScreenSmall,
),
);
} else {
emit(state.copyWith(isScreenSmall: isScreenSmall));
}
},
editPanelResizeStart: (_EditPanelResizeStart e) {
emit(
@ -102,6 +124,8 @@ class HomeSettingEvent with _$HomeSettingEvent {
WorkspaceSettingPB setting,
) = _DidReceiveWorkspaceSetting;
const factory HomeSettingEvent.collapseMenu() = _CollapseMenu;
const factory HomeSettingEvent.checkScreenSize(double screenWidthPx) =
_CheckScreenSize;
const factory HomeSettingEvent.editPanelResized(double offset) =
_EditPanelResized;
const factory HomeSettingEvent.editPanelResizeStart() = _EditPanelResizeStart;
@ -115,6 +139,8 @@ class HomeSettingState with _$HomeSettingState {
required WorkspaceSettingPB workspaceSetting,
required bool unauthorized,
required bool isMenuCollapsed,
required bool keepMenuCollapsed,
required bool isScreenSmall,
required double resizeOffset,
required double resizeStart,
required MenuResizeType resizeType,
@ -129,6 +155,8 @@ class HomeSettingState with _$HomeSettingState {
workspaceSetting: workspaceSetting,
unauthorized: false,
isMenuCollapsed: appearanceSettingsState.isMenuCollapsed,
isScreenSmall: appearanceSettingsState.isMenuCollapsed,
keepMenuCollapsed: false,
resizeOffset: appearanceSettingsState.menuOffset,
resizeStart: 0,
resizeType: MenuResizeType.slide,

View File

@ -29,6 +29,11 @@ class HomeLayout {
menuWidth += homeSetting.resizeOffset;
final screenWidthPx = context.widthPx;
context
.read<HomeSettingBloc>()
.add(HomeSettingEvent.checkScreenSize(screenWidthPx));
if (homeSetting.isMenuCollapsed) {
showMenu = false;
} else {