mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2025-08-07 08:21:56 +00:00
fix: can't open the relation field in the linked database (#7441)
This commit is contained in:
parent
249543d64f
commit
2e17fb9dd3
@ -1,8 +1,9 @@
|
|||||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
import 'package:appflowy/plugins/database/grid/presentation/layout/sizes.dart';
|
|
||||||
import 'package:appflowy/plugins/database/widgets/row/cells/cell_container.dart';
|
|
||||||
import 'package:appflowy/plugins/database/widgets/cell_editor/relation_cell_editor.dart';
|
|
||||||
import 'package:appflowy/plugins/database/application/cell/bloc/relation_cell_bloc.dart';
|
import 'package:appflowy/plugins/database/application/cell/bloc/relation_cell_bloc.dart';
|
||||||
|
import 'package:appflowy/plugins/database/grid/presentation/layout/sizes.dart';
|
||||||
|
import 'package:appflowy/plugins/database/widgets/cell_editor/relation_cell_editor.dart';
|
||||||
|
import 'package:appflowy/plugins/database/widgets/row/cells/cell_container.dart';
|
||||||
|
import 'package:appflowy/workspace/application/user/user_workspace_bloc.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database2/protobuf.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database2/protobuf.dart';
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
@ -20,6 +21,7 @@ class DesktopGridRelationCellSkin extends IEditableRelationCellSkin {
|
|||||||
RelationCellState state,
|
RelationCellState state,
|
||||||
PopoverController popoverController,
|
PopoverController popoverController,
|
||||||
) {
|
) {
|
||||||
|
final userWorkspaceBloc = context.read<UserWorkspaceBloc>();
|
||||||
return AppFlowyPopover(
|
return AppFlowyPopover(
|
||||||
controller: popoverController,
|
controller: popoverController,
|
||||||
direction: PopoverDirection.bottomWithLeftAligned,
|
direction: PopoverDirection.bottomWithLeftAligned,
|
||||||
@ -27,8 +29,11 @@ class DesktopGridRelationCellSkin extends IEditableRelationCellSkin {
|
|||||||
margin: EdgeInsets.zero,
|
margin: EdgeInsets.zero,
|
||||||
onClose: () => cellContainerNotifier.isFocus = false,
|
onClose: () => cellContainerNotifier.isFocus = false,
|
||||||
popupBuilder: (context) {
|
popupBuilder: (context) {
|
||||||
return BlocProvider.value(
|
return MultiBlocProvider(
|
||||||
value: bloc,
|
providers: [
|
||||||
|
BlocProvider.value(value: userWorkspaceBloc),
|
||||||
|
BlocProvider.value(value: bloc),
|
||||||
|
],
|
||||||
child: const RelationCellEditor(),
|
child: const RelationCellEditor(),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
import 'package:appflowy/plugins/database/widgets/row/cells/cell_container.dart';
|
|
||||||
import 'package:appflowy/plugins/database/widgets/cell_editor/relation_cell_editor.dart';
|
|
||||||
import 'package:appflowy/plugins/database/application/cell/bloc/relation_cell_bloc.dart';
|
import 'package:appflowy/plugins/database/application/cell/bloc/relation_cell_bloc.dart';
|
||||||
|
import 'package:appflowy/plugins/database/widgets/cell_editor/relation_cell_editor.dart';
|
||||||
|
import 'package:appflowy/plugins/database/widgets/row/cells/cell_container.dart';
|
||||||
|
import 'package:appflowy/workspace/application/user/user_workspace_bloc.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database2/protobuf.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database2/protobuf.dart';
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
@ -19,6 +20,7 @@ class DesktopRowDetailRelationCellSkin extends IEditableRelationCellSkin {
|
|||||||
RelationCellState state,
|
RelationCellState state,
|
||||||
PopoverController popoverController,
|
PopoverController popoverController,
|
||||||
) {
|
) {
|
||||||
|
final userWorkspaceBloc = context.read<UserWorkspaceBloc>();
|
||||||
return AppFlowyPopover(
|
return AppFlowyPopover(
|
||||||
controller: popoverController,
|
controller: popoverController,
|
||||||
direction: PopoverDirection.bottomWithLeftAligned,
|
direction: PopoverDirection.bottomWithLeftAligned,
|
||||||
@ -27,8 +29,11 @@ class DesktopRowDetailRelationCellSkin extends IEditableRelationCellSkin {
|
|||||||
asBarrier: true,
|
asBarrier: true,
|
||||||
onClose: () => cellContainerNotifier.isFocus = false,
|
onClose: () => cellContainerNotifier.isFocus = false,
|
||||||
popupBuilder: (context) {
|
popupBuilder: (context) {
|
||||||
return BlocProvider.value(
|
return MultiBlocProvider(
|
||||||
value: bloc,
|
providers: [
|
||||||
|
BlocProvider.value(value: userWorkspaceBloc),
|
||||||
|
BlocProvider.value(value: bloc),
|
||||||
|
],
|
||||||
child: const RelationCellEditor(),
|
child: const RelationCellEditor(),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@ -6,6 +6,7 @@ import 'package:appflowy/plugins/database/tab_bar/tab_bar_view.dart';
|
|||||||
import 'package:appflowy/plugins/database/widgets/row/relation_row_detail.dart';
|
import 'package:appflowy/plugins/database/widgets/row/relation_row_detail.dart';
|
||||||
import 'package:appflowy/startup/startup.dart';
|
import 'package:appflowy/startup/startup.dart';
|
||||||
import 'package:appflowy/workspace/application/tabs/tabs_bloc.dart';
|
import 'package:appflowy/workspace/application/tabs/tabs_bloc.dart';
|
||||||
|
import 'package:appflowy/workspace/application/user/user_workspace_bloc.dart';
|
||||||
import 'package:appflowy/workspace/application/view/view_ext.dart';
|
import 'package:appflowy/workspace/application/view/view_ext.dart';
|
||||||
import 'package:appflowy_backend/dispatch/dispatch.dart';
|
import 'package:appflowy_backend/dispatch/dispatch.dart';
|
||||||
import 'package:appflowy_backend/log.dart';
|
import 'package:appflowy_backend/log.dart';
|
||||||
@ -112,8 +113,11 @@ class _RelationCellEditorContentState
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return BlocProvider.value(
|
return MultiBlocProvider(
|
||||||
value: bloc,
|
providers: [
|
||||||
|
BlocProvider.value(value: bloc),
|
||||||
|
BlocProvider.value(value: context.read<UserWorkspaceBloc>()),
|
||||||
|
],
|
||||||
child: BlocBuilder<RelationRowSearchBloc, RelationRowSearchState>(
|
child: BlocBuilder<RelationRowSearchBloc, RelationRowSearchState>(
|
||||||
buildWhen: (previous, current) =>
|
buildWhen: (previous, current) =>
|
||||||
!listEquals(previous.filteredRows, current.filteredRows),
|
!listEquals(previous.filteredRows, current.filteredRows),
|
||||||
@ -316,13 +320,16 @@ class _SearchField extends StatelessWidget {
|
|||||||
FlowyOverlay.show(
|
FlowyOverlay.show(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (BuildContext overlayContext) {
|
builder: (BuildContext overlayContext) {
|
||||||
return RelatedRowDetailPage(
|
return BlocProvider.value(
|
||||||
|
value: context.read<UserWorkspaceBloc>(),
|
||||||
|
child: RelatedRowDetailPage(
|
||||||
databaseId: context
|
databaseId: context
|
||||||
.read<RelationCellBloc>()
|
.read<RelationCellBloc>()
|
||||||
.state
|
.state
|
||||||
.relatedDatabaseMeta!
|
.relatedDatabaseMeta!
|
||||||
.databaseId,
|
.databaseId,
|
||||||
rowId: row.rowId,
|
rowId: row.rowId,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@ -391,13 +398,17 @@ class _RowListItem extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
child: GestureDetector(
|
child: GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
|
final userWorkspaceBloc = context.read<UserWorkspaceBloc>();
|
||||||
if (isSelected) {
|
if (isSelected) {
|
||||||
FlowyOverlay.show(
|
FlowyOverlay.show(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (BuildContext overlayContext) {
|
builder: (BuildContext overlayContext) {
|
||||||
return RelatedRowDetailPage(
|
return BlocProvider.value(
|
||||||
|
value: userWorkspaceBloc,
|
||||||
|
child: RelatedRowDetailPage(
|
||||||
databaseId: databaseId,
|
databaseId: databaseId,
|
||||||
rowId: row.rowId,
|
rowId: row.rowId,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
@ -23,7 +23,7 @@ class RelatedRowDetailPage extends StatelessWidget {
|
|||||||
initialRowId: rowId,
|
initialRowId: rowId,
|
||||||
),
|
),
|
||||||
child: BlocBuilder<RelatedRowDetailPageBloc, RelatedRowDetailPageState>(
|
child: BlocBuilder<RelatedRowDetailPageBloc, RelatedRowDetailPageState>(
|
||||||
builder: (context, state) {
|
builder: (_, state) {
|
||||||
return state.when(
|
return state.when(
|
||||||
loading: () => const SizedBox.shrink(),
|
loading: () => const SizedBox.shrink(),
|
||||||
ready: (databaseController, rowController) {
|
ready: (databaseController, rowController) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user