mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
Merge branch 'main' into workspace-invite
This commit is contained in:
commit
2d68960b69
7
.github/workflows/ios_ci.yaml
vendored
7
.github/workflows/ios_ci.yaml
vendored
@ -86,6 +86,7 @@ jobs:
|
|||||||
model: 'iPhone 15'
|
model: 'iPhone 15'
|
||||||
shutdown_after_job: false
|
shutdown_after_job: false
|
||||||
|
|
||||||
- name: Run integration tests
|
# enable it again if the 12 mins timeout is fixed
|
||||||
working-directory: frontend/appflowy_flutter
|
# - name: Run integration tests
|
||||||
run: flutter test integration_test/runner.dart -d ${{ steps.simulator-action.outputs.udid }}
|
# working-directory: frontend/appflowy_flutter
|
||||||
|
# run: flutter test integration_test/runner.dart -d ${{ steps.simulator-action.outputs.udid }}
|
||||||
|
@ -4,6 +4,7 @@ import 'dart:io';
|
|||||||
|
|
||||||
import 'package:appflowy/env/cloud_env.dart';
|
import 'package:appflowy/env/cloud_env.dart';
|
||||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
|
import 'package:appflowy/plugins/document/presentation/editor_plugins/openai/widgets/loading.dart';
|
||||||
import 'package:appflowy/shared/feature_flags.dart';
|
import 'package:appflowy/shared/feature_flags.dart';
|
||||||
import 'package:appflowy/startup/startup.dart';
|
import 'package:appflowy/startup/startup.dart';
|
||||||
import 'package:appflowy/user/application/auth/af_cloud_mock_auth_service.dart';
|
import 'package:appflowy/user/application/auth/af_cloud_mock_auth_service.dart';
|
||||||
@ -51,33 +52,23 @@ void main() {
|
|||||||
await tester.expectToSeeHomePageWithGetStartedPage();
|
await tester.expectToSeeHomePageWithGetStartedPage();
|
||||||
|
|
||||||
const name = 'AppFlowy.IO';
|
const name = 'AppFlowy.IO';
|
||||||
|
// the workspace will be opened after created
|
||||||
await tester.createCollaborativeWorkspace(name);
|
await tester.createCollaborativeWorkspace(name);
|
||||||
|
|
||||||
// see the success message
|
final loading = find.byType(Loading);
|
||||||
var success = find.text(LocaleKeys.workspace_createSuccess.tr());
|
await tester.pumpUntilNotFound(loading);
|
||||||
expect(success, findsOneWidget);
|
|
||||||
await tester.pumpUntilNotFound(success);
|
|
||||||
|
|
||||||
// check the create result
|
Finder success;
|
||||||
|
|
||||||
|
// delete the newly created workspace
|
||||||
await tester.openCollaborativeWorkspaceMenu();
|
await tester.openCollaborativeWorkspaceMenu();
|
||||||
var items = find.byType(WorkspaceMenuItem);
|
final Finder items = find.byType(WorkspaceMenuItem);
|
||||||
expect(items, findsNWidgets(2));
|
expect(items, findsNWidgets(2));
|
||||||
expect(
|
expect(
|
||||||
tester.widget<WorkspaceMenuItem>(items.last).workspace.name,
|
tester.widget<WorkspaceMenuItem>(items.last).workspace.name,
|
||||||
name,
|
name,
|
||||||
);
|
);
|
||||||
|
|
||||||
// open the newly created workspace
|
|
||||||
await tester.tapButton(items.last, milliseconds: 1000);
|
|
||||||
success = find.text(LocaleKeys.workspace_openSuccess.tr());
|
|
||||||
await tester.pumpUntilFound(success);
|
|
||||||
expect(success, findsOneWidget);
|
|
||||||
await tester.pumpUntilNotFound(success);
|
|
||||||
|
|
||||||
await tester.closeCollaborativeWorkspaceMenu();
|
|
||||||
|
|
||||||
// delete the newly created workspace
|
|
||||||
await tester.openCollaborativeWorkspaceMenu();
|
|
||||||
final secondWorkspace = find.byType(WorkspaceMenuItem).last;
|
final secondWorkspace = find.byType(WorkspaceMenuItem).last;
|
||||||
await tester.hoverOnWidget(
|
await tester.hoverOnWidget(
|
||||||
secondWorkspace,
|
secondWorkspace,
|
||||||
@ -97,20 +88,11 @@ void main() {
|
|||||||
await tester.tapButton(find.text(LocaleKeys.button_ok.tr()));
|
await tester.tapButton(find.text(LocaleKeys.button_ok.tr()));
|
||||||
// delete success
|
// delete success
|
||||||
success = find.text(LocaleKeys.workspace_createSuccess.tr());
|
success = find.text(LocaleKeys.workspace_createSuccess.tr());
|
||||||
|
await tester.pumpUntilFound(success);
|
||||||
expect(success, findsOneWidget);
|
expect(success, findsOneWidget);
|
||||||
await tester.pumpUntilNotFound(success);
|
await tester.pumpUntilNotFound(success);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
// check the result
|
|
||||||
await tester.openCollaborativeWorkspaceMenu();
|
|
||||||
items = find.byType(WorkspaceMenuItem);
|
|
||||||
expect(items, findsOneWidget);
|
|
||||||
expect(
|
|
||||||
tester.widget<WorkspaceMenuItem>(items.last).workspace.name != name,
|
|
||||||
true,
|
|
||||||
);
|
|
||||||
await tester.closeCollaborativeWorkspaceMenu();
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -180,7 +180,11 @@ extension AppFlowyTestBase on WidgetTester {
|
|||||||
buttons: buttons,
|
buttons: buttons,
|
||||||
warnIfMissed: warnIfMissed,
|
warnIfMissed: warnIfMissed,
|
||||||
);
|
);
|
||||||
await pumpAndSettle(Duration(milliseconds: milliseconds));
|
await pumpAndSettle(
|
||||||
|
Duration(milliseconds: milliseconds),
|
||||||
|
EnginePhase.sendSemanticsUpdate,
|
||||||
|
const Duration(seconds: 5),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> tapButtonWithName(
|
Future<void> tapButtonWithName(
|
||||||
|
@ -528,7 +528,7 @@ extension CommonOperations on WidgetTester {
|
|||||||
final workspace = find.byType(SidebarWorkspace);
|
final workspace = find.byType(SidebarWorkspace);
|
||||||
expect(workspace, findsOneWidget);
|
expect(workspace, findsOneWidget);
|
||||||
// click it
|
// click it
|
||||||
await tapButton(workspace);
|
await tapButton(workspace, milliseconds: 2000);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> closeCollaborativeWorkspaceMenu() async {
|
Future<void> closeCollaborativeWorkspaceMenu() async {
|
||||||
@ -560,7 +560,6 @@ extension CommonOperations on WidgetTester {
|
|||||||
|
|
||||||
// input the workspace name
|
// input the workspace name
|
||||||
await enterText(find.byType(TextField), name);
|
await enterText(find.byType(TextField), name);
|
||||||
await pumpAndSettle();
|
|
||||||
|
|
||||||
await tapButtonWithName(LocaleKeys.button_ok.tr());
|
await tapButtonWithName(LocaleKeys.button_ok.tr());
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ class AppFlowyConfiguration {
|
|||||||
required this.custom_app_path,
|
required this.custom_app_path,
|
||||||
required this.origin_app_path,
|
required this.origin_app_path,
|
||||||
required this.device_id,
|
required this.device_id,
|
||||||
|
required this.platform,
|
||||||
required this.authenticator_type,
|
required this.authenticator_type,
|
||||||
required this.supabase_config,
|
required this.supabase_config,
|
||||||
required this.appflowy_cloud_config,
|
required this.appflowy_cloud_config,
|
||||||
@ -25,6 +26,7 @@ class AppFlowyConfiguration {
|
|||||||
final String custom_app_path;
|
final String custom_app_path;
|
||||||
final String origin_app_path;
|
final String origin_app_path;
|
||||||
final String device_id;
|
final String device_id;
|
||||||
|
final String platform;
|
||||||
final int authenticator_type;
|
final int authenticator_type;
|
||||||
final SupabaseConfiguration supabase_config;
|
final SupabaseConfiguration supabase_config;
|
||||||
final AppFlowyCloudConfiguration appflowy_cloud_config;
|
final AppFlowyCloudConfiguration appflowy_cloud_config;
|
||||||
|
@ -69,7 +69,7 @@ class MobileFolders extends StatelessWidget {
|
|||||||
...isCollaborativeWorkspace
|
...isCollaborativeWorkspace
|
||||||
? [
|
? [
|
||||||
MobileSectionFolder(
|
MobileSectionFolder(
|
||||||
title: LocaleKeys.sideBar_public.tr(),
|
title: LocaleKeys.sideBar_workspace.tr(),
|
||||||
categoryType: FolderCategoryType.public,
|
categoryType: FolderCategoryType.public,
|
||||||
views: state.section.publicViews,
|
views: state.section.publicViews,
|
||||||
),
|
),
|
||||||
|
@ -31,6 +31,7 @@ class MobileWorkspaceMenu extends StatelessWidget {
|
|||||||
final workspace = workspaces[i];
|
final workspace = workspaces[i];
|
||||||
children.add(
|
children.add(
|
||||||
_WorkspaceMenuItem(
|
_WorkspaceMenuItem(
|
||||||
|
key: ValueKey(workspace.workspaceId),
|
||||||
userProfile: userProfile,
|
userProfile: userProfile,
|
||||||
workspace: workspace,
|
workspace: workspace,
|
||||||
showTopBorder: i == 0,
|
showTopBorder: i == 0,
|
||||||
@ -47,6 +48,7 @@ class MobileWorkspaceMenu extends StatelessWidget {
|
|||||||
|
|
||||||
class _WorkspaceMenuItem extends StatelessWidget {
|
class _WorkspaceMenuItem extends StatelessWidget {
|
||||||
const _WorkspaceMenuItem({
|
const _WorkspaceMenuItem({
|
||||||
|
super.key,
|
||||||
required this.userProfile,
|
required this.userProfile,
|
||||||
required this.workspace,
|
required this.workspace,
|
||||||
required this.showTopBorder,
|
required this.showTopBorder,
|
||||||
|
@ -30,9 +30,9 @@ class DatabaseSyncBloc extends Bloc<DatabaseSyncEvent, DatabaseSyncBlocState> {
|
|||||||
.then((value) => value.fold((s) => s, (f) => null));
|
.then((value) => value.fold((s) => s, (f) => null));
|
||||||
emit(
|
emit(
|
||||||
state.copyWith(
|
state.copyWith(
|
||||||
shouldShowIndicator:
|
shouldShowIndicator: userProfile?.authenticator ==
|
||||||
userProfile?.authenticator != AuthenticatorPB.Local &&
|
AuthenticatorPB.AppFlowyCloud &&
|
||||||
databaseId != null,
|
databaseId != null,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
if (databaseId != null) {
|
if (databaseId != null) {
|
||||||
|
@ -16,6 +16,7 @@ import 'package:appflowy/user/application/auth/auth_service.dart';
|
|||||||
import 'package:appflowy/util/color_generator/color_generator.dart';
|
import 'package:appflowy/util/color_generator/color_generator.dart';
|
||||||
import 'package:appflowy/util/color_to_hex_string.dart';
|
import 'package:appflowy/util/color_to_hex_string.dart';
|
||||||
import 'package:appflowy/util/debounce.dart';
|
import 'package:appflowy/util/debounce.dart';
|
||||||
|
import 'package:appflowy/util/throttle.dart';
|
||||||
import 'package:appflowy/workspace/application/view/view_listener.dart';
|
import 'package:appflowy/workspace/application/view/view_listener.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-document/entities.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-document/entities.pb.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-document/protobuf.dart';
|
import 'package:appflowy_backend/protobuf/flowy-document/protobuf.dart';
|
||||||
@ -66,7 +67,7 @@ class DocumentBloc extends Bloc<DocumentEvent, DocumentState> {
|
|||||||
StreamSubscription? _transactionSubscription;
|
StreamSubscription? _transactionSubscription;
|
||||||
|
|
||||||
final _updateSelectionDebounce = Debounce();
|
final _updateSelectionDebounce = Debounce();
|
||||||
final _syncDocDebounce = Debounce();
|
final _syncThrottle = Throttler(duration: const Duration(milliseconds: 500));
|
||||||
|
|
||||||
bool get isLocalMode {
|
bool get isLocalMode {
|
||||||
final userProfilePB = state.userProfilePB;
|
final userProfilePB = state.userProfilePB;
|
||||||
@ -155,7 +156,7 @@ class DocumentBloc extends Bloc<DocumentEvent, DocumentState> {
|
|||||||
/// subscribe to the document content change
|
/// subscribe to the document content change
|
||||||
void _onDocumentChanged() {
|
void _onDocumentChanged() {
|
||||||
_documentListener.start(
|
_documentListener.start(
|
||||||
onDocEventUpdate: _debounceSyncDoc,
|
onDocEventUpdate: _throttleSyncDoc,
|
||||||
onDocAwarenessUpdate: _onAwarenessStatesUpdate,
|
onDocAwarenessUpdate: _onAwarenessStatesUpdate,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -290,8 +291,8 @@ class DocumentBloc extends Bloc<DocumentEvent, DocumentState> {
|
|||||||
_updateSelectionDebounce.call(_onSelectionUpdate);
|
_updateSelectionDebounce.call(_onSelectionUpdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _debounceSyncDoc(DocEventPB docEvent) {
|
void _throttleSyncDoc(DocEventPB docEvent) {
|
||||||
_syncDocDebounce.call(() {
|
_syncThrottle.call(() {
|
||||||
_onDocumentStateUpdate(docEvent);
|
_onDocumentStateUpdate(docEvent);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -77,17 +77,30 @@ class DocumentCollabAdapter {
|
|||||||
|
|
||||||
final ops = diffNodes(editorState.document.root, document.root);
|
final ops = diffNodes(editorState.document.root, document.root);
|
||||||
if (ops.isEmpty) {
|
if (ops.isEmpty) {
|
||||||
debugPrint('[collab] received empty ops');
|
Log.info('Doc diff, no changes');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
debugPrint('[collab] received ops: $ops');
|
prettyPrintJson(ops.map((op) => op.toJson()).toList());
|
||||||
|
|
||||||
final transaction = editorState.transaction;
|
final transaction = editorState.transaction;
|
||||||
for (final op in ops) {
|
for (final op in ops) {
|
||||||
transaction.add(op);
|
transaction.add(op);
|
||||||
}
|
}
|
||||||
await editorState.apply(transaction, isRemote: true);
|
await editorState.apply(transaction, isRemote: true);
|
||||||
|
|
||||||
|
// Use for debugging, DO NOT REMOVE
|
||||||
|
// assert(() {
|
||||||
|
// final local = editorState.document.root.toJson();
|
||||||
|
// final remote = document.root.toJson();
|
||||||
|
// if (!const DeepCollectionEquality().equals(local, remote)) {
|
||||||
|
// Log.error('Invalid diff status');
|
||||||
|
// Log.error('Local: $local');
|
||||||
|
// Log.error('Remote: $remote');
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// return true;
|
||||||
|
// }());
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _syncUpdated(
|
Future<void> _syncUpdated(
|
||||||
|
@ -32,7 +32,7 @@ class DocumentCollaboratorsBloc
|
|||||||
emit(
|
emit(
|
||||||
state.copyWith(
|
state.copyWith(
|
||||||
shouldShowIndicator:
|
shouldShowIndicator:
|
||||||
userProfile?.authenticator != AuthenticatorPB.Local,
|
userProfile?.authenticator == AuthenticatorPB.AppFlowyCloud,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
final deviceId = ApplicationInfo.deviceId;
|
final deviceId = ApplicationInfo.deviceId;
|
||||||
|
@ -31,7 +31,7 @@ class DocumentSyncBloc extends Bloc<DocumentSyncEvent, DocumentSyncBlocState> {
|
|||||||
emit(
|
emit(
|
||||||
state.copyWith(
|
state.copyWith(
|
||||||
shouldShowIndicator:
|
shouldShowIndicator:
|
||||||
userProfile?.authenticator != AuthenticatorPB.Local,
|
userProfile?.authenticator == AuthenticatorPB.AppFlowyCloud,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
_syncStateListener.start(
|
_syncStateListener.start(
|
||||||
|
@ -145,7 +145,7 @@ class DocumentPluginWidgetBuilder extends PluginWidgetBuilder
|
|||||||
? [
|
? [
|
||||||
DocumentCollaborators(
|
DocumentCollaborators(
|
||||||
key: ValueKey('collaborators_${view.id}'),
|
key: ValueKey('collaborators_${view.id}'),
|
||||||
width: 100,
|
width: 150,
|
||||||
height: 32,
|
height: 32,
|
||||||
view: view,
|
view: view,
|
||||||
),
|
),
|
||||||
|
@ -39,17 +39,12 @@ class _DocumentPageState extends State<DocumentPage> {
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
|
||||||
// The appflowy editor use Intl as localization, set the default language as fallback.
|
|
||||||
Intl.defaultLocale = 'en_US';
|
|
||||||
|
|
||||||
EditorNotification.addListener(_onEditorNotification);
|
EditorNotification.addListener(_onEditorNotification);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
EditorNotification.removeListener(_onEditorNotification);
|
EditorNotification.removeListener(_onEditorNotification);
|
||||||
|
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@ class CollaboratorAvatarStack extends StatelessWidget {
|
|||||||
this.borderWidth,
|
this.borderWidth,
|
||||||
this.borderColor,
|
this.borderColor,
|
||||||
this.backgroundColor,
|
this.backgroundColor,
|
||||||
|
required this.plusWidgetBuilder,
|
||||||
});
|
});
|
||||||
|
|
||||||
final List<Widget> avatars;
|
final List<Widget> avatars;
|
||||||
@ -31,13 +32,16 @@ class CollaboratorAvatarStack extends StatelessWidget {
|
|||||||
|
|
||||||
final Color? backgroundColor;
|
final Color? backgroundColor;
|
||||||
|
|
||||||
|
final Widget Function(int value, BorderSide border) plusWidgetBuilder;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final settings = this.settings ??
|
final settings = this.settings ??
|
||||||
RestrictedPositions(
|
RestrictedPositions(
|
||||||
maxCoverage: 0.3,
|
maxCoverage: 0.3,
|
||||||
minCoverage: 0.1,
|
minCoverage: 0.2,
|
||||||
align: StackAlign.right,
|
align: StackAlign.right,
|
||||||
|
laying: StackLaying.first,
|
||||||
);
|
);
|
||||||
|
|
||||||
final border = BorderSide(
|
final border = BorderSide(
|
||||||
@ -45,27 +49,12 @@ class CollaboratorAvatarStack extends StatelessWidget {
|
|||||||
width: borderWidth ?? 2.0,
|
width: borderWidth ?? 2.0,
|
||||||
);
|
);
|
||||||
|
|
||||||
Widget textInfoWidgetBuilder(surplus) => BorderedCircleAvatar(
|
|
||||||
border: border,
|
|
||||||
backgroundColor: backgroundColor,
|
|
||||||
child: FittedBox(
|
|
||||||
child: Padding(
|
|
||||||
padding: const EdgeInsets.all(8.0),
|
|
||||||
child: Text(
|
|
||||||
'+$surplus',
|
|
||||||
style: Theme.of(context).textTheme.titleLarge,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
final infoWidgetBuilder = this.infoWidgetBuilder ?? textInfoWidgetBuilder;
|
|
||||||
|
|
||||||
return SizedBox(
|
return SizedBox(
|
||||||
height: height,
|
height: height,
|
||||||
width: width,
|
width: width,
|
||||||
child: WidgetStack(
|
child: WidgetStack(
|
||||||
positions: settings,
|
positions: settings,
|
||||||
buildInfoWidget: infoWidgetBuilder,
|
buildInfoWidget: (value) => plusWidgetBuilder(value, border),
|
||||||
stackedWidgets: avatars
|
stackedWidgets: avatars
|
||||||
.map(
|
.map(
|
||||||
(avatar) => CircleAvatar(
|
(avatar) => CircleAvatar(
|
||||||
|
@ -2,6 +2,7 @@ import 'package:appflowy/plugins/document/application/doc_collaborators_bloc.dar
|
|||||||
import 'package:appflowy/plugins/document/presentation/collaborator_avater_stack.dart';
|
import 'package:appflowy/plugins/document/presentation/collaborator_avater_stack.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
|
||||||
import 'package:appflowy_editor/appflowy_editor.dart';
|
import 'package:appflowy_editor/appflowy_editor.dart';
|
||||||
|
import 'package:avatar_stack/avatar_stack.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/widget/flowy_tooltip.dart';
|
import 'package:flowy_infra_ui/widget/flowy_tooltip.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@ -41,8 +42,30 @@ class DocumentCollaborators extends StatelessWidget {
|
|||||||
height: height,
|
height: height,
|
||||||
width: width,
|
width: width,
|
||||||
borderWidth: 1.0,
|
borderWidth: 1.0,
|
||||||
backgroundColor:
|
plusWidgetBuilder: (value, border) {
|
||||||
Theme.of(context).colorScheme.onSecondaryContainer,
|
final lastXCollaborators = collaborators.sublist(
|
||||||
|
collaborators.length - value,
|
||||||
|
);
|
||||||
|
return BorderedCircleAvatar(
|
||||||
|
border: border,
|
||||||
|
backgroundColor: Theme.of(context).hoverColor,
|
||||||
|
child: FittedBox(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: FlowyTooltip(
|
||||||
|
message: lastXCollaborators
|
||||||
|
.map((e) => e.userName)
|
||||||
|
.join('\n'),
|
||||||
|
child: FlowyText(
|
||||||
|
'+$value',
|
||||||
|
fontSize: fontSize,
|
||||||
|
color: Colors.black,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
avatars: collaborators
|
avatars: collaborators
|
||||||
.map(
|
.map(
|
||||||
(c) => FlowyTooltip(
|
(c) => FlowyTooltip(
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
import 'package:appflowy/plugins/document/presentation/editor_plugins/plugins.dart';
|
import 'package:appflowy/plugins/document/presentation/editor_plugins/plugins.dart';
|
||||||
import 'package:appflowy_editor/appflowy_editor.dart';
|
import 'package:appflowy_editor/appflowy_editor.dart';
|
||||||
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
final List<CommandShortcutEvent> customTextAlignCommands = [
|
final List<CommandShortcutEvent> customTextAlignCommands = [
|
||||||
@ -19,7 +21,7 @@ final List<CommandShortcutEvent> customTextAlignCommands = [
|
|||||||
final CommandShortcutEvent customTextLeftAlignCommand = CommandShortcutEvent(
|
final CommandShortcutEvent customTextLeftAlignCommand = CommandShortcutEvent(
|
||||||
key: 'Align text to the left',
|
key: 'Align text to the left',
|
||||||
command: 'ctrl+shift+l',
|
command: 'ctrl+shift+l',
|
||||||
getDescription: () => 'Align text to the left',
|
getDescription: LocaleKeys.settings_shortcuts_commands_textAlignLeft.tr,
|
||||||
handler: (editorState) => _textAlignHandler(editorState, leftAlignmentKey),
|
handler: (editorState) => _textAlignHandler(editorState, leftAlignmentKey),
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -34,7 +36,7 @@ final CommandShortcutEvent customTextLeftAlignCommand = CommandShortcutEvent(
|
|||||||
final CommandShortcutEvent customTextCenterAlignCommand = CommandShortcutEvent(
|
final CommandShortcutEvent customTextCenterAlignCommand = CommandShortcutEvent(
|
||||||
key: 'Align text to the center',
|
key: 'Align text to the center',
|
||||||
command: 'ctrl+shift+e',
|
command: 'ctrl+shift+e',
|
||||||
getDescription: () => 'Align text to the center',
|
getDescription: LocaleKeys.settings_shortcuts_commands_textAlignCenter.tr,
|
||||||
handler: (editorState) => _textAlignHandler(editorState, centerAlignmentKey),
|
handler: (editorState) => _textAlignHandler(editorState, centerAlignmentKey),
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -49,7 +51,7 @@ final CommandShortcutEvent customTextCenterAlignCommand = CommandShortcutEvent(
|
|||||||
final CommandShortcutEvent customTextRightAlignCommand = CommandShortcutEvent(
|
final CommandShortcutEvent customTextRightAlignCommand = CommandShortcutEvent(
|
||||||
key: 'Align text to the right',
|
key: 'Align text to the right',
|
||||||
command: 'ctrl+shift+r',
|
command: 'ctrl+shift+r',
|
||||||
getDescription: () => 'Align text to the right',
|
getDescription: LocaleKeys.settings_shortcuts_commands_textAlignRight.tr,
|
||||||
handler: (editorState) => _textAlignHandler(editorState, rightAlignmentKey),
|
handler: (editorState) => _textAlignHandler(editorState, rightAlignmentKey),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
|
import 'package:appflowy/generated/locale_keys.g.dart' show LocaleKeys;
|
||||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
import 'package:appflowy_editor/appflowy_editor.dart';
|
import 'package:appflowy_editor/appflowy_editor.dart';
|
||||||
|
import 'package:easy_localization/easy_localization.dart'
|
||||||
|
show StringTranslateExtension;
|
||||||
import 'package:easy_localization/easy_localization.dart' hide TextDirection;
|
import 'package:easy_localization/easy_localization.dart' hide TextDirection;
|
||||||
import 'package:flowy_infra/theme_extension.dart';
|
import 'package:flowy_infra/theme_extension.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
@ -49,7 +52,7 @@ Node calloutNode({
|
|||||||
|
|
||||||
// defining the callout block menu item in selection menu
|
// defining the callout block menu item in selection menu
|
||||||
SelectionMenuItem calloutItem = SelectionMenuItem.node(
|
SelectionMenuItem calloutItem = SelectionMenuItem.node(
|
||||||
getName: () => LocaleKeys.document_plugins_callout.tr(),
|
getName: LocaleKeys.document_plugins_callout.tr,
|
||||||
iconData: Icons.note,
|
iconData: Icons.note,
|
||||||
keywords: [CalloutBlockKeys.type],
|
keywords: [CalloutBlockKeys.type],
|
||||||
nodeBuilder: (editorState, context) =>
|
nodeBuilder: (editorState, context) =>
|
||||||
|
@ -107,7 +107,7 @@ Node codeBlockNode({
|
|||||||
|
|
||||||
// defining the callout block menu item for selection
|
// defining the callout block menu item for selection
|
||||||
SelectionMenuItem codeBlockItem = SelectionMenuItem.node(
|
SelectionMenuItem codeBlockItem = SelectionMenuItem.node(
|
||||||
getName: () => LocaleKeys.document_selectionMenu_codeBlock.tr(),
|
getName: LocaleKeys.document_selectionMenu_codeBlock.tr,
|
||||||
iconData: Icons.abc,
|
iconData: Icons.abc,
|
||||||
keywords: ['code', 'codeblock'],
|
keywords: ['code', 'codeblock'],
|
||||||
nodeBuilder: (editorState, _) => codeBlockNode(),
|
nodeBuilder: (editorState, _) => codeBlockNode(),
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
import 'package:appflowy/plugins/document/presentation/editor_plugins/plugins.dart';
|
import 'package:appflowy/plugins/document/presentation/editor_plugins/plugins.dart';
|
||||||
import 'package:appflowy_editor/appflowy_editor.dart';
|
import 'package:appflowy_editor/appflowy_editor.dart';
|
||||||
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
final List<CharacterShortcutEvent> codeBlockCharacterEvents = [
|
final List<CharacterShortcutEvent> codeBlockCharacterEvents = [
|
||||||
@ -59,7 +61,8 @@ final CommandShortcutEvent insertNewParagraphNextToCodeBlockCommand =
|
|||||||
CommandShortcutEvent(
|
CommandShortcutEvent(
|
||||||
key: 'insert a new paragraph next to the code block',
|
key: 'insert a new paragraph next to the code block',
|
||||||
command: 'shift+enter',
|
command: 'shift+enter',
|
||||||
getDescription: () => 'Insert a new paragraph next to the code block',
|
getDescription:
|
||||||
|
LocaleKeys.settings_shortcuts_commands_codeBlockNewParagraph.tr,
|
||||||
handler: _insertNewParagraphNextToCodeBlockCommandHandler,
|
handler: _insertNewParagraphNextToCodeBlockCommandHandler,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -72,7 +75,8 @@ final CommandShortcutEvent tabToInsertSpacesInCodeBlockCommand =
|
|||||||
CommandShortcutEvent(
|
CommandShortcutEvent(
|
||||||
key: 'tab to insert two spaces at the line start in code block',
|
key: 'tab to insert two spaces at the line start in code block',
|
||||||
command: 'tab',
|
command: 'tab',
|
||||||
getDescription: () => 'Insert two spaces at the line start in code block',
|
getDescription:
|
||||||
|
LocaleKeys.settings_shortcuts_commands_codeBlockAddTwoSpaces.tr,
|
||||||
handler: _tabToInsertSpacesInCodeBlockCommandHandler,
|
handler: _tabToInsertSpacesInCodeBlockCommandHandler,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -85,7 +89,8 @@ final CommandShortcutEvent tabToDeleteSpacesInCodeBlockCommand =
|
|||||||
CommandShortcutEvent(
|
CommandShortcutEvent(
|
||||||
key: 'shift + tab to delete two spaces at the line start in code block',
|
key: 'shift + tab to delete two spaces at the line start in code block',
|
||||||
command: 'shift+tab',
|
command: 'shift+tab',
|
||||||
getDescription: () => 'Delete two spaces at the line start in code block',
|
getDescription:
|
||||||
|
LocaleKeys.settings_shortcuts_commands_codeBlockDeleteTwoSpaces.tr,
|
||||||
handler: _tabToDeleteSpacesInCodeBlockCommandHandler,
|
handler: _tabToDeleteSpacesInCodeBlockCommandHandler,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -98,7 +103,7 @@ final CommandShortcutEvent selectAllInCodeBlockCommand = CommandShortcutEvent(
|
|||||||
key: 'ctrl + a to select all content inside a code block',
|
key: 'ctrl + a to select all content inside a code block',
|
||||||
command: 'ctrl+a',
|
command: 'ctrl+a',
|
||||||
macOSCommand: 'meta+a',
|
macOSCommand: 'meta+a',
|
||||||
getDescription: () => 'Select all content inside a code block',
|
getDescription: LocaleKeys.settings_shortcuts_commands_codeBlockSelectAll.tr,
|
||||||
handler: _selectAllInCodeBlockCommandHandler,
|
handler: _selectAllInCodeBlockCommandHandler,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -111,7 +116,7 @@ final CommandShortcutEvent pasteInCodeblock = CommandShortcutEvent(
|
|||||||
key: 'paste in codeblock',
|
key: 'paste in codeblock',
|
||||||
command: 'ctrl+v',
|
command: 'ctrl+v',
|
||||||
macOSCommand: 'cmd+v',
|
macOSCommand: 'cmd+v',
|
||||||
getDescription: () => 'Paste text in codeblock',
|
getDescription: LocaleKeys.settings_shortcuts_commands_codeBlockPasteText.tr,
|
||||||
handler: _pasteInCodeBlock,
|
handler: _pasteInCodeBlock,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -6,15 +6,15 @@ import 'package:easy_localization/easy_localization.dart';
|
|||||||
final List<List<ContextMenuItem>> customContextMenuItems = [
|
final List<List<ContextMenuItem>> customContextMenuItems = [
|
||||||
[
|
[
|
||||||
ContextMenuItem(
|
ContextMenuItem(
|
||||||
getName: () => LocaleKeys.document_plugins_contextMenu_copy.tr(),
|
getName: LocaleKeys.document_plugins_contextMenu_copy.tr,
|
||||||
onPressed: (editorState) => customCopyCommand.execute(editorState),
|
onPressed: (editorState) => customCopyCommand.execute(editorState),
|
||||||
),
|
),
|
||||||
ContextMenuItem(
|
ContextMenuItem(
|
||||||
getName: () => LocaleKeys.document_plugins_contextMenu_paste.tr(),
|
getName: LocaleKeys.document_plugins_contextMenu_paste.tr,
|
||||||
onPressed: (editorState) => customPasteCommand.execute(editorState),
|
onPressed: (editorState) => customPasteCommand.execute(editorState),
|
||||||
),
|
),
|
||||||
ContextMenuItem(
|
ContextMenuItem(
|
||||||
getName: () => LocaleKeys.document_plugins_contextMenu_cut.tr(),
|
getName: LocaleKeys.document_plugins_contextMenu_cut.tr,
|
||||||
onPressed: (editorState) => customCutCommand.execute(editorState),
|
onPressed: (editorState) => customCutCommand.execute(editorState),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -13,8 +13,8 @@ import 'package:flutter/material.dart';
|
|||||||
/// - mobile
|
/// - mobile
|
||||||
///
|
///
|
||||||
final CommandShortcutEvent customCopyCommand = CommandShortcutEvent(
|
final CommandShortcutEvent customCopyCommand = CommandShortcutEvent(
|
||||||
key: 'copy the selected content (with formatting)',
|
key: 'copy the selected content',
|
||||||
getDescription: () => 'copy the selected content (with formatting)',
|
getDescription: () => AppFlowyEditorL10n.current.cmdCopySelection,
|
||||||
command: 'ctrl+c',
|
command: 'ctrl+c',
|
||||||
macOSCommand: 'cmd+c',
|
macOSCommand: 'cmd+c',
|
||||||
handler: _copyCommandHandler,
|
handler: _copyCommandHandler,
|
||||||
|
@ -11,8 +11,8 @@ import 'package:flutter/material.dart';
|
|||||||
/// - mobile
|
/// - mobile
|
||||||
///
|
///
|
||||||
final CommandShortcutEvent customCutCommand = CommandShortcutEvent(
|
final CommandShortcutEvent customCutCommand = CommandShortcutEvent(
|
||||||
key: 'cut the selected content (with formatting)',
|
key: 'cut the selected content',
|
||||||
getDescription: () => 'cut the selected content (with formatting)',
|
getDescription: () => AppFlowyEditorL10n.current.cmdCutSelection,
|
||||||
command: 'ctrl+x',
|
command: 'ctrl+x',
|
||||||
macOSCommand: 'cmd+x',
|
macOSCommand: 'cmd+x',
|
||||||
handler: _cutCommandHandler,
|
handler: _cutCommandHandler,
|
||||||
|
@ -18,8 +18,8 @@ import 'package:string_validator/string_validator.dart';
|
|||||||
/// - mobile
|
/// - mobile
|
||||||
///
|
///
|
||||||
final CommandShortcutEvent customPasteCommand = CommandShortcutEvent(
|
final CommandShortcutEvent customPasteCommand = CommandShortcutEvent(
|
||||||
key: 'paste the content (with formatting)',
|
key: 'paste the content',
|
||||||
getDescription: () => 'paste the content (with formatting)',
|
getDescription: () => AppFlowyEditorL10n.current.cmdPasteContent,
|
||||||
command: 'ctrl+v',
|
command: 'ctrl+v',
|
||||||
macOSCommand: 'cmd+v',
|
macOSCommand: 'cmd+v',
|
||||||
handler: _pasteCommandHandler,
|
handler: _pasteCommandHandler,
|
||||||
|
@ -10,7 +10,7 @@ import 'package:easy_localization/easy_localization.dart';
|
|||||||
|
|
||||||
SelectionMenuItem inlineGridMenuItem(DocumentBloc documentBloc) =>
|
SelectionMenuItem inlineGridMenuItem(DocumentBloc documentBloc) =>
|
||||||
SelectionMenuItem(
|
SelectionMenuItem(
|
||||||
getName: () => LocaleKeys.document_slashMenu_grid_createANewGrid.tr(),
|
getName: LocaleKeys.document_slashMenu_grid_createANewGrid.tr,
|
||||||
icon: (editorState, onSelected, style) => SelectableSvgWidget(
|
icon: (editorState, onSelected, style) => SelectableSvgWidget(
|
||||||
data: FlowySvgs.grid_s,
|
data: FlowySvgs.grid_s,
|
||||||
isSelected: onSelected,
|
isSelected: onSelected,
|
||||||
@ -31,7 +31,7 @@ SelectionMenuItem inlineGridMenuItem(DocumentBloc documentBloc) =>
|
|||||||
|
|
||||||
SelectionMenuItem inlineBoardMenuItem(DocumentBloc documentBloc) =>
|
SelectionMenuItem inlineBoardMenuItem(DocumentBloc documentBloc) =>
|
||||||
SelectionMenuItem(
|
SelectionMenuItem(
|
||||||
getName: () => LocaleKeys.document_slashMenu_board_createANewBoard.tr(),
|
getName: LocaleKeys.document_slashMenu_board_createANewBoard.tr,
|
||||||
icon: (editorState, onSelected, style) => SelectableSvgWidget(
|
icon: (editorState, onSelected, style) => SelectableSvgWidget(
|
||||||
data: FlowySvgs.board_s,
|
data: FlowySvgs.board_s,
|
||||||
isSelected: onSelected,
|
isSelected: onSelected,
|
||||||
@ -52,8 +52,7 @@ SelectionMenuItem inlineBoardMenuItem(DocumentBloc documentBloc) =>
|
|||||||
|
|
||||||
SelectionMenuItem inlineCalendarMenuItem(DocumentBloc documentBloc) =>
|
SelectionMenuItem inlineCalendarMenuItem(DocumentBloc documentBloc) =>
|
||||||
SelectionMenuItem(
|
SelectionMenuItem(
|
||||||
getName: () =>
|
getName: LocaleKeys.document_slashMenu_calendar_createANewCalendar.tr,
|
||||||
LocaleKeys.document_slashMenu_calendar_createANewCalendar.tr(),
|
|
||||||
icon: (editorState, onSelected, style) => SelectableSvgWidget(
|
icon: (editorState, onSelected, style) => SelectableSvgWidget(
|
||||||
data: FlowySvgs.date_s,
|
data: FlowySvgs.date_s,
|
||||||
isSelected: onSelected,
|
isSelected: onSelected,
|
||||||
|
@ -9,7 +9,7 @@ import 'package:easy_localization/easy_localization.dart';
|
|||||||
// Document Reference
|
// Document Reference
|
||||||
|
|
||||||
SelectionMenuItem referencedDocumentMenuItem = SelectionMenuItem(
|
SelectionMenuItem referencedDocumentMenuItem = SelectionMenuItem(
|
||||||
getName: () => LocaleKeys.document_plugins_referencedDocument.tr(),
|
getName: LocaleKeys.document_plugins_referencedDocument.tr,
|
||||||
icon: (editorState, onSelected, style) => SelectableSvgWidget(
|
icon: (editorState, onSelected, style) => SelectableSvgWidget(
|
||||||
data: FlowySvgs.document_s,
|
data: FlowySvgs.document_s,
|
||||||
isSelected: onSelected,
|
isSelected: onSelected,
|
||||||
@ -23,7 +23,7 @@ SelectionMenuItem referencedDocumentMenuItem = SelectionMenuItem(
|
|||||||
// Database References
|
// Database References
|
||||||
|
|
||||||
SelectionMenuItem referencedGridMenuItem = SelectionMenuItem(
|
SelectionMenuItem referencedGridMenuItem = SelectionMenuItem(
|
||||||
getName: () => LocaleKeys.document_plugins_referencedGrid.tr(),
|
getName: LocaleKeys.document_plugins_referencedGrid.tr,
|
||||||
icon: (editorState, onSelected, style) => SelectableSvgWidget(
|
icon: (editorState, onSelected, style) => SelectableSvgWidget(
|
||||||
data: FlowySvgs.grid_s,
|
data: FlowySvgs.grid_s,
|
||||||
isSelected: onSelected,
|
isSelected: onSelected,
|
||||||
@ -35,7 +35,7 @@ SelectionMenuItem referencedGridMenuItem = SelectionMenuItem(
|
|||||||
);
|
);
|
||||||
|
|
||||||
SelectionMenuItem referencedBoardMenuItem = SelectionMenuItem(
|
SelectionMenuItem referencedBoardMenuItem = SelectionMenuItem(
|
||||||
getName: () => LocaleKeys.document_plugins_referencedBoard.tr(),
|
getName: LocaleKeys.document_plugins_referencedBoard.tr,
|
||||||
icon: (editorState, onSelected, style) => SelectableSvgWidget(
|
icon: (editorState, onSelected, style) => SelectableSvgWidget(
|
||||||
data: FlowySvgs.board_s,
|
data: FlowySvgs.board_s,
|
||||||
isSelected: onSelected,
|
isSelected: onSelected,
|
||||||
@ -47,7 +47,7 @@ SelectionMenuItem referencedBoardMenuItem = SelectionMenuItem(
|
|||||||
);
|
);
|
||||||
|
|
||||||
SelectionMenuItem referencedCalendarMenuItem = SelectionMenuItem(
|
SelectionMenuItem referencedCalendarMenuItem = SelectionMenuItem(
|
||||||
getName: () => LocaleKeys.document_plugins_referencedCalendar.tr(),
|
getName: LocaleKeys.document_plugins_referencedCalendar.tr,
|
||||||
icon: (editorState, onSelected, style) => SelectableSvgWidget(
|
icon: (editorState, onSelected, style) => SelectableSvgWidget(
|
||||||
data: FlowySvgs.date_s,
|
data: FlowySvgs.date_s,
|
||||||
isSelected: onSelected,
|
isSelected: onSelected,
|
||||||
|
@ -36,7 +36,7 @@ Node mathEquationNode({
|
|||||||
|
|
||||||
// defining the callout block menu item for selection
|
// defining the callout block menu item for selection
|
||||||
SelectionMenuItem mathEquationItem = SelectionMenuItem.node(
|
SelectionMenuItem mathEquationItem = SelectionMenuItem.node(
|
||||||
getName: () => LocaleKeys.document_plugins_mathEquation_name.tr(),
|
getName: LocaleKeys.document_plugins_mathEquation_name.tr,
|
||||||
iconData: Icons.text_fields_rounded,
|
iconData: Icons.text_fields_rounded,
|
||||||
keywords: ['tex, latex, katex', 'math equation', 'formula'],
|
keywords: ['tex, latex, katex', 'math equation', 'formula'],
|
||||||
nodeBuilder: (editorState, _) => mathEquationNode(),
|
nodeBuilder: (editorState, _) => mathEquationNode(),
|
||||||
|
@ -258,11 +258,11 @@ class _MentionDateBlockState extends State<MentionDateBlock> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
DateTime _parseTime(String timeStr, UserTimeFormatPB timeFormat) {
|
DateTime _parseTime(String timeStr, UserTimeFormatPB timeFormat) {
|
||||||
final twelveHourFormat = DateFormat('HH:mm a');
|
final twelveHourFormat = DateFormat('hh:mm a');
|
||||||
final twentyFourHourFormat = DateFormat('HH:mm');
|
final twentyFourHourFormat = DateFormat('HH:mm');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (timeFormat == TimeFormatPB.TwelveHour) {
|
if (timeFormat == UserTimeFormatPB.TwelveHour) {
|
||||||
return twelveHourFormat.parseStrict(timeStr);
|
return twelveHourFormat.parseStrict(timeStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ import 'package:appflowy_editor/appflowy_editor.dart';
|
|||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
|
|
||||||
SelectionMenuItem dateMenuItem = SelectionMenuItem(
|
SelectionMenuItem dateMenuItem = SelectionMenuItem(
|
||||||
getName: () => LocaleKeys.document_plugins_date.tr(),
|
getName: LocaleKeys.document_plugins_insertDate.tr,
|
||||||
icon: (_, isSelected, style) => FlowySvg(
|
icon: (_, isSelected, style) => FlowySvg(
|
||||||
FlowySvgs.date_s,
|
FlowySvgs.date_s,
|
||||||
color: isSelected
|
color: isSelected
|
||||||
|
@ -43,7 +43,7 @@ Node autoCompletionNode({
|
|||||||
}
|
}
|
||||||
|
|
||||||
SelectionMenuItem autoGeneratorMenuItem = SelectionMenuItem.node(
|
SelectionMenuItem autoGeneratorMenuItem = SelectionMenuItem.node(
|
||||||
getName: () => LocaleKeys.document_plugins_autoGeneratorMenuItemName.tr(),
|
getName: LocaleKeys.document_plugins_autoGeneratorMenuItemName.tr,
|
||||||
iconData: Icons.generating_tokens,
|
iconData: Icons.generating_tokens,
|
||||||
keywords: ['ai', 'openai' 'writer', 'autogenerator'],
|
keywords: ['ai', 'openai' 'writer', 'autogenerator'],
|
||||||
nodeBuilder: (editorState, _) {
|
nodeBuilder: (editorState, _) {
|
||||||
|
@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
|||||||
class Loading {
|
class Loading {
|
||||||
Loading(this.context);
|
Loading(this.context);
|
||||||
|
|
||||||
late BuildContext loadingContext;
|
BuildContext? loadingContext;
|
||||||
final BuildContext context;
|
final BuildContext context;
|
||||||
|
|
||||||
Future<void> start() async => showDialog<void>(
|
Future<void> start() async => showDialog<void>(
|
||||||
@ -24,7 +24,12 @@ class Loading {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
Future<void> stop() async => Navigator.of(loadingContext).pop();
|
Future<void> stop() async {
|
||||||
|
if (loadingContext != null) {
|
||||||
|
Navigator.of(loadingContext!).pop();
|
||||||
|
loadingContext = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class BarrierDialog {
|
class BarrierDialog {
|
||||||
|
@ -19,7 +19,7 @@ class OutlineBlockKeys {
|
|||||||
|
|
||||||
// defining the callout block menu item for selection
|
// defining the callout block menu item for selection
|
||||||
SelectionMenuItem outlineItem = SelectionMenuItem.node(
|
SelectionMenuItem outlineItem = SelectionMenuItem.node(
|
||||||
getName: () => LocaleKeys.document_selectionMenu_outline.tr(),
|
getName: LocaleKeys.document_selectionMenu_outline.tr,
|
||||||
iconData: Icons.list_alt,
|
iconData: Icons.list_alt,
|
||||||
keywords: ['outline', 'table of contents'],
|
keywords: ['outline', 'table of contents'],
|
||||||
nodeBuilder: (editorState, _) => outlineBlockNode(),
|
nodeBuilder: (editorState, _) => outlineBlockNode(),
|
||||||
|
@ -46,7 +46,7 @@ Node toggleListBlockNode({
|
|||||||
|
|
||||||
// defining the toggle list block menu item
|
// defining the toggle list block menu item
|
||||||
SelectionMenuItem toggleListBlockItem = SelectionMenuItem.node(
|
SelectionMenuItem toggleListBlockItem = SelectionMenuItem.node(
|
||||||
getName: () => LocaleKeys.document_plugins_toggleList.tr(),
|
getName: LocaleKeys.document_plugins_toggleList.tr,
|
||||||
iconData: Icons.arrow_right,
|
iconData: Icons.arrow_right,
|
||||||
keywords: ['collapsed list', 'toggle list', 'list'],
|
keywords: ['collapsed list', 'toggle list', 'list'],
|
||||||
nodeBuilder: (editorState, _) => toggleListBlockNode(),
|
nodeBuilder: (editorState, _) => toggleListBlockNode(),
|
||||||
|
@ -110,7 +110,7 @@ CharacterShortcutEvent insertChildNodeInsideToggleList = CharacterShortcutEvent(
|
|||||||
// toggle the todo list
|
// toggle the todo list
|
||||||
final CommandShortcutEvent toggleToggleListCommand = CommandShortcutEvent(
|
final CommandShortcutEvent toggleToggleListCommand = CommandShortcutEvent(
|
||||||
key: 'toggle the toggle list',
|
key: 'toggle the toggle list',
|
||||||
getDescription: () => 'Toggle the toggle list',
|
getDescription: () => AppFlowyEditorL10n.current.cmdToggleTodoList,
|
||||||
command: 'ctrl+enter',
|
command: 'ctrl+enter',
|
||||||
macOSCommand: 'cmd+enter',
|
macOSCommand: 'cmd+enter',
|
||||||
handler: _toggleToggleListCommandHandler,
|
handler: _toggleToggleListCommandHandler,
|
||||||
|
@ -5,6 +5,7 @@ import 'package:appflowy/env/backend_env.dart';
|
|||||||
import 'package:appflowy/env/cloud_env.dart';
|
import 'package:appflowy/env/cloud_env.dart';
|
||||||
import 'package:appflowy/user/application/auth/device_id.dart';
|
import 'package:appflowy/user/application/auth/device_id.dart';
|
||||||
import 'package:appflowy_backend/appflowy_backend.dart';
|
import 'package:appflowy_backend/appflowy_backend.dart';
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'package:path/path.dart' as path;
|
import 'package:path/path.dart' as path;
|
||||||
|
|
||||||
@ -28,6 +29,7 @@ class InitRustSDKTask extends LaunchTask {
|
|||||||
final dir = customApplicationPath ?? applicationPath;
|
final dir = customApplicationPath ?? applicationPath;
|
||||||
final deviceId = await getDeviceId();
|
final deviceId = await getDeviceId();
|
||||||
|
|
||||||
|
debugPrint('application path: ${applicationPath.path}');
|
||||||
// Pass the environment variables to the Rust SDK
|
// Pass the environment variables to the Rust SDK
|
||||||
final env = _makeAppFlowyConfiguration(
|
final env = _makeAppFlowyConfiguration(
|
||||||
root.path,
|
root.path,
|
||||||
@ -59,6 +61,7 @@ AppFlowyConfiguration _makeAppFlowyConfiguration(
|
|||||||
custom_app_path: customAppPath,
|
custom_app_path: customAppPath,
|
||||||
origin_app_path: originAppPath,
|
origin_app_path: originAppPath,
|
||||||
device_id: deviceId,
|
device_id: deviceId,
|
||||||
|
platform: Platform.operatingSystem,
|
||||||
authenticator_type: env.authenticatorType.value,
|
authenticator_type: env.authenticatorType.value,
|
||||||
supabase_config: env.supabaseConfig,
|
supabase_config: env.supabaseConfig,
|
||||||
appflowy_cloud_config: env.appflowyCloudConfig,
|
appflowy_cloud_config: env.appflowyCloudConfig,
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
|
|
||||||
class Debounce {
|
class Debounce {
|
||||||
Debounce({
|
Debounce({
|
||||||
this.duration = const Duration(milliseconds: 1000),
|
this.duration = const Duration(milliseconds: 1000),
|
||||||
@ -10,8 +8,9 @@ class Debounce {
|
|||||||
final Duration duration;
|
final Duration duration;
|
||||||
Timer? _timer;
|
Timer? _timer;
|
||||||
|
|
||||||
void call(VoidCallback action) {
|
void call(Function action) {
|
||||||
dispose();
|
dispose();
|
||||||
|
|
||||||
_timer = Timer(duration, () {
|
_timer = Timer(duration, () {
|
||||||
action();
|
action();
|
||||||
});
|
});
|
||||||
|
23
frontend/appflowy_flutter/lib/util/throttle.dart
Normal file
23
frontend/appflowy_flutter/lib/util/throttle.dart
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
|
||||||
|
class Throttler {
|
||||||
|
Throttler({
|
||||||
|
this.duration = const Duration(milliseconds: 1000),
|
||||||
|
});
|
||||||
|
|
||||||
|
final Duration duration;
|
||||||
|
Timer? _timer;
|
||||||
|
|
||||||
|
void call(Function callback) {
|
||||||
|
if (_timer?.isActive ?? false) return;
|
||||||
|
|
||||||
|
_timer = Timer(duration, () {
|
||||||
|
callback();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void dispose() {
|
||||||
|
_timer?.cancel();
|
||||||
|
_timer = null;
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,9 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
|
import 'package:appflowy/startup/plugin/plugin.dart';
|
||||||
|
import 'package:appflowy/startup/startup.dart';
|
||||||
|
import 'package:appflowy/workspace/application/tabs/tabs_bloc.dart';
|
||||||
|
import 'package:appflowy/workspace/application/view/view_ext.dart';
|
||||||
import 'package:appflowy/workspace/application/workspace/workspace_sections_listener.dart';
|
import 'package:appflowy/workspace/application/workspace/workspace_sections_listener.dart';
|
||||||
import 'package:appflowy/workspace/application/workspace/workspace_service.dart';
|
import 'package:appflowy/workspace/application/workspace/workspace_service.dart';
|
||||||
import 'package:appflowy_backend/log.dart';
|
import 'package:appflowy_backend/log.dart';
|
||||||
@ -152,6 +156,37 @@ class SidebarSectionsBloc
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
reload: (userProfile, workspaceId) async {
|
||||||
|
_initial(userProfile, workspaceId);
|
||||||
|
final sectionViews = await _getSectionViews();
|
||||||
|
if (sectionViews != null) {
|
||||||
|
emit(
|
||||||
|
state.copyWith(
|
||||||
|
section: sectionViews,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
// try to open the fist view in public section or private section
|
||||||
|
if (sectionViews.publicViews.isNotEmpty) {
|
||||||
|
getIt<TabsBloc>().add(
|
||||||
|
TabsEvent.openPlugin(
|
||||||
|
plugin: sectionViews.publicViews.first.plugin(),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
} else if (sectionViews.privateViews.isNotEmpty) {
|
||||||
|
getIt<TabsBloc>().add(
|
||||||
|
TabsEvent.openPlugin(
|
||||||
|
plugin: sectionViews.privateViews.first.plugin(),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
getIt<TabsBloc>().add(
|
||||||
|
TabsEvent.openPlugin(
|
||||||
|
plugin: makePlugin(pluginType: PluginType.blank),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@ -245,6 +280,10 @@ class SidebarSectionsEvent with _$SidebarSectionsEvent {
|
|||||||
const factory SidebarSectionsEvent.receiveSectionViewsUpdate(
|
const factory SidebarSectionsEvent.receiveSectionViewsUpdate(
|
||||||
SectionViewsPB sectionViews,
|
SectionViewsPB sectionViews,
|
||||||
) = _ReceiveSectionViewsUpdate;
|
) = _ReceiveSectionViewsUpdate;
|
||||||
|
const factory SidebarSectionsEvent.reload(
|
||||||
|
UserProfilePB userProfile,
|
||||||
|
String workspaceId,
|
||||||
|
) = _Reload;
|
||||||
}
|
}
|
||||||
|
|
||||||
@freezed
|
@freezed
|
||||||
|
@ -10,6 +10,8 @@ import 'package:appflowy/workspace/application/settings/appearance/base_appearan
|
|||||||
import 'package:appflowy_backend/log.dart';
|
import 'package:appflowy_backend/log.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-user/date_time.pbenum.dart';
|
import 'package:appflowy_backend/protobuf/flowy-user/date_time.pbenum.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-user/user_setting.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-user/user_setting.pb.dart';
|
||||||
|
import 'package:appflowy_editor/appflowy_editor.dart'
|
||||||
|
show AppFlowyEditorLocalizations;
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra/theme.dart';
|
import 'package:flowy_infra/theme.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@ -193,6 +195,9 @@ class AppearanceSettingsCubit extends Cubit<AppearanceSettingsState> {
|
|||||||
Log.warn('Catch error in setLocale: $e}');
|
Log.warn('Catch error in setLocale: $e}');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Sync the app's locale with the editor (initialization and update)
|
||||||
|
AppFlowyEditorLocalizations.load(newLocale);
|
||||||
|
|
||||||
if (state.locale != newLocale) {
|
if (state.locale != newLocale) {
|
||||||
_appearanceSettings.locale.languageCode = newLocale.languageCode;
|
_appearanceSettings.locale.languageCode = newLocale.languageCode;
|
||||||
_appearanceSettings.locale.countryCode = newLocale.countryCode ?? "";
|
_appearanceSettings.locale.countryCode = newLocale.countryCode ?? "";
|
||||||
|
@ -39,8 +39,10 @@ class ShortcutsCubit extends Cubit<ShortcutsState> {
|
|||||||
commandShortcutEvents,
|
commandShortcutEvents,
|
||||||
customizeShortcuts,
|
customizeShortcuts,
|
||||||
);
|
);
|
||||||
|
|
||||||
//sort the shortcuts
|
//sort the shortcuts
|
||||||
commandShortcutEvents.sort((a, b) => a.key.compareTo(b.key));
|
commandShortcutEvents.sort((a, b) => a.key.compareTo(b.key));
|
||||||
|
|
||||||
emit(
|
emit(
|
||||||
state.copyWith(
|
state.copyWith(
|
||||||
status: ShortcutsStatus.success,
|
status: ShortcutsStatus.success,
|
||||||
|
@ -40,7 +40,7 @@ class UserWorkspaceBloc extends Bloc<UserWorkspaceEvent, UserWorkspaceState> {
|
|||||||
final currentWorkspace = result.$1;
|
final currentWorkspace = result.$1;
|
||||||
final workspaces = result.$2;
|
final workspaces = result.$2;
|
||||||
final isCollabWorkspaceOn =
|
final isCollabWorkspaceOn =
|
||||||
userProfile.authenticator != AuthenticatorPB.Local &&
|
userProfile.authenticator == AuthenticatorPB.AppFlowyCloud &&
|
||||||
FeatureFlag.collaborativeWorkspace.isOn;
|
FeatureFlag.collaborativeWorkspace.isOn;
|
||||||
if (currentWorkspace != null && result.$3 == true) {
|
if (currentWorkspace != null && result.$3 == true) {
|
||||||
final result = await _userService
|
final result = await _userService
|
||||||
@ -71,6 +71,15 @@ class UserWorkspaceBloc extends Bloc<UserWorkspaceEvent, UserWorkspaceState> {
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
createWorkspace: (name) async {
|
createWorkspace: (name) async {
|
||||||
|
emit(
|
||||||
|
state.copyWith(
|
||||||
|
actionResult: const UserWorkspaceActionResult(
|
||||||
|
actionType: UserWorkspaceActionType.create,
|
||||||
|
isLoading: true,
|
||||||
|
result: null,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
final result = await _userService.createUserWorkspace(name);
|
final result = await _userService.createUserWorkspace(name);
|
||||||
final workspaces = result.fold(
|
final workspaces = result.fold(
|
||||||
(s) => [...state.workspaces, s],
|
(s) => [...state.workspaces, s],
|
||||||
@ -81,6 +90,7 @@ class UserWorkspaceBloc extends Bloc<UserWorkspaceEvent, UserWorkspaceState> {
|
|||||||
workspaces: workspaces,
|
workspaces: workspaces,
|
||||||
actionResult: UserWorkspaceActionResult(
|
actionResult: UserWorkspaceActionResult(
|
||||||
actionType: UserWorkspaceActionType.create,
|
actionType: UserWorkspaceActionType.create,
|
||||||
|
isLoading: false,
|
||||||
result: result,
|
result: result,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -91,6 +101,15 @@ class UserWorkspaceBloc extends Bloc<UserWorkspaceEvent, UserWorkspaceState> {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
deleteWorkspace: (workspaceId) async {
|
deleteWorkspace: (workspaceId) async {
|
||||||
|
emit(
|
||||||
|
state.copyWith(
|
||||||
|
actionResult: const UserWorkspaceActionResult(
|
||||||
|
actionType: UserWorkspaceActionType.delete,
|
||||||
|
isLoading: true,
|
||||||
|
result: null,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
final remoteWorkspaces = await _fetchWorkspaces().then(
|
final remoteWorkspaces = await _fetchWorkspaces().then(
|
||||||
(value) => value.$2,
|
(value) => value.$2,
|
||||||
);
|
);
|
||||||
@ -108,6 +127,7 @@ class UserWorkspaceBloc extends Bloc<UserWorkspaceEvent, UserWorkspaceState> {
|
|||||||
actionResult: UserWorkspaceActionResult(
|
actionResult: UserWorkspaceActionResult(
|
||||||
actionType: UserWorkspaceActionType.delete,
|
actionType: UserWorkspaceActionType.delete,
|
||||||
result: result,
|
result: result,
|
||||||
|
isLoading: false,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@ -134,11 +154,21 @@ class UserWorkspaceBloc extends Bloc<UserWorkspaceEvent, UserWorkspaceState> {
|
|||||||
actionResult: UserWorkspaceActionResult(
|
actionResult: UserWorkspaceActionResult(
|
||||||
actionType: UserWorkspaceActionType.delete,
|
actionType: UserWorkspaceActionType.delete,
|
||||||
result: result,
|
result: result,
|
||||||
|
isLoading: false,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
openWorkspace: (workspaceId) async {
|
openWorkspace: (workspaceId) async {
|
||||||
|
emit(
|
||||||
|
state.copyWith(
|
||||||
|
actionResult: const UserWorkspaceActionResult(
|
||||||
|
actionType: UserWorkspaceActionType.open,
|
||||||
|
isLoading: true,
|
||||||
|
result: null,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
final result = await _userService.openWorkspace(workspaceId);
|
final result = await _userService.openWorkspace(workspaceId);
|
||||||
final currentWorkspace = result.fold(
|
final currentWorkspace = result.fold(
|
||||||
(s) => state.workspaces.firstWhereOrNull(
|
(s) => state.workspaces.firstWhereOrNull(
|
||||||
@ -157,6 +187,7 @@ class UserWorkspaceBloc extends Bloc<UserWorkspaceEvent, UserWorkspaceState> {
|
|||||||
currentWorkspace: currentWorkspace,
|
currentWorkspace: currentWorkspace,
|
||||||
actionResult: UserWorkspaceActionResult(
|
actionResult: UserWorkspaceActionResult(
|
||||||
actionType: UserWorkspaceActionType.open,
|
actionType: UserWorkspaceActionType.open,
|
||||||
|
isLoading: false,
|
||||||
result: result,
|
result: result,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -188,6 +219,7 @@ class UserWorkspaceBloc extends Bloc<UserWorkspaceEvent, UserWorkspaceState> {
|
|||||||
currentWorkspace: currentWorkspace,
|
currentWorkspace: currentWorkspace,
|
||||||
actionResult: UserWorkspaceActionResult(
|
actionResult: UserWorkspaceActionResult(
|
||||||
actionType: UserWorkspaceActionType.rename,
|
actionType: UserWorkspaceActionType.rename,
|
||||||
|
isLoading: false,
|
||||||
result: result,
|
result: result,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -221,6 +253,7 @@ class UserWorkspaceBloc extends Bloc<UserWorkspaceEvent, UserWorkspaceState> {
|
|||||||
currentWorkspace: currentWorkspace,
|
currentWorkspace: currentWorkspace,
|
||||||
actionResult: UserWorkspaceActionResult(
|
actionResult: UserWorkspaceActionResult(
|
||||||
actionType: UserWorkspaceActionType.updateIcon,
|
actionType: UserWorkspaceActionType.updateIcon,
|
||||||
|
isLoading: false,
|
||||||
result: result,
|
result: result,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -245,6 +278,7 @@ class UserWorkspaceBloc extends Bloc<UserWorkspaceEvent, UserWorkspaceState> {
|
|||||||
workspaces: workspaces,
|
workspaces: workspaces,
|
||||||
actionResult: UserWorkspaceActionResult(
|
actionResult: UserWorkspaceActionResult(
|
||||||
actionType: UserWorkspaceActionType.leave,
|
actionType: UserWorkspaceActionType.leave,
|
||||||
|
isLoading: false,
|
||||||
result: result,
|
result: result,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -253,7 +287,11 @@ class UserWorkspaceBloc extends Bloc<UserWorkspaceEvent, UserWorkspaceState> {
|
|||||||
updateWorkspaces: (workspaces) async {
|
updateWorkspaces: (workspaces) async {
|
||||||
emit(
|
emit(
|
||||||
state.copyWith(
|
state.copyWith(
|
||||||
workspaces: workspaces.items,
|
workspaces: workspaces.items
|
||||||
|
..sort(
|
||||||
|
(a, b) =>
|
||||||
|
a.createdAtTimestamp.compareTo(b.createdAtTimestamp),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@ -359,11 +397,13 @@ enum UserWorkspaceActionType {
|
|||||||
class UserWorkspaceActionResult {
|
class UserWorkspaceActionResult {
|
||||||
const UserWorkspaceActionResult({
|
const UserWorkspaceActionResult({
|
||||||
required this.actionType,
|
required this.actionType,
|
||||||
|
required this.isLoading,
|
||||||
required this.result,
|
required this.result,
|
||||||
});
|
});
|
||||||
|
|
||||||
final UserWorkspaceActionType actionType;
|
final UserWorkspaceActionType actionType;
|
||||||
final FlowyResult<void, FlowyError> result;
|
final bool isLoading;
|
||||||
|
final FlowyResult<void, FlowyError>? result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@freezed
|
@freezed
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:appflowy/startup/plugin/plugin.dart';
|
|
||||||
import 'package:appflowy/startup/startup.dart';
|
import 'package:appflowy/startup/startup.dart';
|
||||||
import 'package:appflowy/workspace/application/favorite/favorite_bloc.dart';
|
import 'package:appflowy/workspace/application/favorite/favorite_bloc.dart';
|
||||||
import 'package:appflowy/workspace/application/favorite/prelude.dart';
|
import 'package:appflowy/workspace/application/favorite/prelude.dart';
|
||||||
@ -106,21 +105,22 @@ class HomeSideBar extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
BlocListener<UserWorkspaceBloc, UserWorkspaceState>(
|
BlocListener<UserWorkspaceBloc, UserWorkspaceState>(
|
||||||
listener: (context, state) {
|
listener: (context, state) {
|
||||||
context.read<TabsBloc>().add(
|
final actionType = state.actionResult?.actionType;
|
||||||
TabsEvent.openPlugin(
|
|
||||||
plugin: makePlugin(pluginType: PluginType.blank),
|
if (actionType == UserWorkspaceActionType.create ||
|
||||||
),
|
actionType == UserWorkspaceActionType.delete ||
|
||||||
);
|
actionType == UserWorkspaceActionType.open) {
|
||||||
context.read<SidebarSectionsBloc>().add(
|
context.read<SidebarSectionsBloc>().add(
|
||||||
SidebarSectionsEvent.initial(
|
SidebarSectionsEvent.reload(
|
||||||
userProfile,
|
userProfile,
|
||||||
state.currentWorkspace?.workspaceId ??
|
state.currentWorkspace?.workspaceId ??
|
||||||
workspaceSetting.workspaceId,
|
workspaceSetting.workspaceId,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
context.read<FavoriteBloc>().add(
|
context.read<FavoriteBloc>().add(
|
||||||
const FavoriteEvent.fetchFavorites(),
|
const FavoriteEvent.fetchFavorites(),
|
||||||
);
|
);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -103,10 +103,10 @@ class PublicSectionFolder extends SectionFolder {
|
|||||||
super.key,
|
super.key,
|
||||||
required super.views,
|
required super.views,
|
||||||
}) : super(
|
}) : super(
|
||||||
title: LocaleKeys.sideBar_public.tr(),
|
title: LocaleKeys.sideBar_workspace.tr(),
|
||||||
categoryType: FolderCategoryType.public,
|
categoryType: FolderCategoryType.public,
|
||||||
expandButtonTooltip: LocaleKeys.sideBar_clickToHidePublic.tr(),
|
expandButtonTooltip: LocaleKeys.sideBar_clickToHideWorkspace.tr(),
|
||||||
addButtonTooltip: LocaleKeys.sideBar_addAPageToPublic.tr(),
|
addButtonTooltip: LocaleKeys.sideBar_addAPageToWorkspace.tr(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import 'package:appflowy/generated/flowy_svgs.g.dart';
|
import 'package:appflowy/generated/flowy_svgs.g.dart';
|
||||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
|
import 'package:appflowy/plugins/document/presentation/editor_plugins/openai/widgets/loading.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/menu/sidebar/sidebar_setting.dart';
|
import 'package:appflowy/workspace/presentation/home/menu/sidebar/sidebar_setting.dart';
|
||||||
import 'package:appflowy/workspace/presentation/home/menu/sidebar/workspace/_sidebar_workspace_icon.dart';
|
import 'package:appflowy/workspace/presentation/home/menu/sidebar/workspace/_sidebar_workspace_icon.dart';
|
||||||
@ -16,7 +17,7 @@ import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
class SidebarWorkspace extends StatelessWidget {
|
class SidebarWorkspace extends StatefulWidget {
|
||||||
const SidebarWorkspace({
|
const SidebarWorkspace({
|
||||||
super.key,
|
super.key,
|
||||||
required this.userProfile,
|
required this.userProfile,
|
||||||
@ -24,9 +25,18 @@ class SidebarWorkspace extends StatelessWidget {
|
|||||||
|
|
||||||
final UserProfilePB userProfile;
|
final UserProfilePB userProfile;
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<SidebarWorkspace> createState() => _SidebarWorkspaceState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _SidebarWorkspaceState extends State<SidebarWorkspace> {
|
||||||
|
Loading? loadingIndicator;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return BlocConsumer<UserWorkspaceBloc, UserWorkspaceState>(
|
return BlocConsumer<UserWorkspaceBloc, UserWorkspaceState>(
|
||||||
|
listenWhen: (previous, current) =>
|
||||||
|
previous.actionResult != current.actionResult,
|
||||||
listener: _showResultDialog,
|
listener: _showResultDialog,
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
final currentWorkspace = state.currentWorkspace;
|
final currentWorkspace = state.currentWorkspace;
|
||||||
@ -37,11 +47,11 @@ class SidebarWorkspace extends StatelessWidget {
|
|||||||
children: [
|
children: [
|
||||||
Expanded(
|
Expanded(
|
||||||
child: SidebarSwitchWorkspaceButton(
|
child: SidebarSwitchWorkspaceButton(
|
||||||
userProfile: userProfile,
|
userProfile: widget.userProfile,
|
||||||
currentWorkspace: currentWorkspace,
|
currentWorkspace: currentWorkspace,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
UserSettingButton(userProfile: userProfile),
|
UserSettingButton(userProfile: widget.userProfile),
|
||||||
const HSpace(4),
|
const HSpace(4),
|
||||||
const NotificationButton(),
|
const NotificationButton(),
|
||||||
],
|
],
|
||||||
@ -58,6 +68,19 @@ class SidebarWorkspace extends StatelessWidget {
|
|||||||
|
|
||||||
final actionType = actionResult.actionType;
|
final actionType = actionResult.actionType;
|
||||||
final result = actionResult.result;
|
final result = actionResult.result;
|
||||||
|
final isLoading = actionResult.isLoading;
|
||||||
|
|
||||||
|
if (isLoading) {
|
||||||
|
loadingIndicator ??= Loading(context)..start();
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
loadingIndicator?.stop();
|
||||||
|
loadingIndicator = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
result.onFailure((f) {
|
result.onFailure((f) {
|
||||||
Log.error(
|
Log.error(
|
||||||
@ -193,6 +216,7 @@ class _SidebarSwitchWorkspaceButtonState
|
|||||||
child: FlowyText.medium(
|
child: FlowyText.medium(
|
||||||
widget.currentWorkspace.name,
|
widget.currentWorkspace.name,
|
||||||
overflow: TextOverflow.ellipsis,
|
overflow: TextOverflow.ellipsis,
|
||||||
|
withTooltip: true,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const FlowySvg(FlowySvgs.drop_menu_show_m),
|
const FlowySvg(FlowySvgs.drop_menu_show_m),
|
||||||
|
@ -110,7 +110,6 @@ class _WorkspaceMoreActionWrapper extends CustomActionCell {
|
|||||||
await showDialog(
|
await showDialog(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (_) => NavigatorOkCancelDialog(
|
builder: (_) => NavigatorOkCancelDialog(
|
||||||
title: LocaleKeys.workspace_leaveCurrentWorkspace.tr(),
|
|
||||||
message: LocaleKeys.workspace_leaveCurrentWorkspacePrompt.tr(),
|
message: LocaleKeys.workspace_leaveCurrentWorkspacePrompt.tr(),
|
||||||
onOkPressed: () {
|
onOkPressed: () {
|
||||||
workspaceBloc.add(
|
workspaceBloc.add(
|
||||||
|
@ -9,6 +9,7 @@ import 'package:appflowy_backend/protobuf/flowy-user/protobuf.dart';
|
|||||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
import 'package:appflowy_popover/appflowy_popover.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';
|
||||||
|
import 'package:flowy_infra_ui/widget/flowy_tooltip.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
@ -136,8 +137,10 @@ class WorkspaceMenuItem extends StatelessWidget {
|
|||||||
PopoverContainer.of(context).closeAll();
|
PopoverContainer.of(context).closeAll();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
margin:
|
margin: const EdgeInsets.symmetric(
|
||||||
const EdgeInsets.symmetric(vertical: 8, horizontal: 12),
|
vertical: 8,
|
||||||
|
horizontal: 12,
|
||||||
|
),
|
||||||
iconPadding: 10.0,
|
iconPadding: 10.0,
|
||||||
leftIconSize: const Size.square(32),
|
leftIconSize: const Size.square(32),
|
||||||
leftIcon: const SizedBox.square(
|
leftIcon: const SizedBox.square(
|
||||||
@ -146,12 +149,12 @@ class WorkspaceMenuItem extends StatelessWidget {
|
|||||||
rightIcon: const HSpace(42.0),
|
rightIcon: const HSpace(42.0),
|
||||||
text: Column(
|
text: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
// mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
children: [
|
||||||
FlowyText.medium(
|
FlowyText.medium(
|
||||||
workspace.name,
|
workspace.name,
|
||||||
fontSize: 14.0,
|
fontSize: 14.0,
|
||||||
overflow: TextOverflow.ellipsis,
|
overflow: TextOverflow.ellipsis,
|
||||||
|
withTooltip: true,
|
||||||
),
|
),
|
||||||
FlowyText(
|
FlowyText(
|
||||||
state.isLoading
|
state.isLoading
|
||||||
@ -171,10 +174,14 @@ class WorkspaceMenuItem extends StatelessWidget {
|
|||||||
left: 8,
|
left: 8,
|
||||||
child: SizedBox.square(
|
child: SizedBox.square(
|
||||||
dimension: 32,
|
dimension: 32,
|
||||||
child: WorkspaceIcon(
|
child: FlowyTooltip(
|
||||||
workspace: workspace,
|
message:
|
||||||
iconSize: 26,
|
LocaleKeys.document_plugins_cover_changeIcon.tr(),
|
||||||
enableEdit: true,
|
child: WorkspaceIcon(
|
||||||
|
workspace: workspace,
|
||||||
|
iconSize: 26,
|
||||||
|
enableEdit: true,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -62,6 +62,7 @@ class SettingsDialog extends StatelessWidget {
|
|||||||
SizedBox(
|
SizedBox(
|
||||||
width: 200,
|
width: 200,
|
||||||
child: SettingsMenu(
|
child: SettingsMenu(
|
||||||
|
userProfile: user,
|
||||||
changeSelectedPage: (index) {
|
changeSelectedPage: (index) {
|
||||||
context
|
context
|
||||||
.read<SettingsDialogBloc>()
|
.read<SettingsDialogBloc>()
|
||||||
|
@ -8,7 +8,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
|
||||||
SelectionMenuItem emojiMenuItem = SelectionMenuItem(
|
SelectionMenuItem emojiMenuItem = SelectionMenuItem(
|
||||||
getName: () => LocaleKeys.document_plugins_emoji.tr(),
|
getName: LocaleKeys.document_plugins_emoji.tr,
|
||||||
icon: (editorState, onSelected, style) => SelectableIconWidget(
|
icon: (editorState, onSelected, style) => SelectableIconWidget(
|
||||||
icon: Icons.emoji_emotions_outlined,
|
icon: Icons.emoji_emotions_outlined,
|
||||||
isSelected: onSelected,
|
isSelected: onSelected,
|
||||||
|
@ -117,13 +117,14 @@ class CloudTypeSwitcher extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final isDevelopMode = integrationMode().isDevelop;
|
final isDevelopMode = integrationMode().isDevelop;
|
||||||
// Only show the appflowyCloudDevelop in develop mode
|
// Only show the appflowyCloudDevelop in develop mode
|
||||||
final values = AuthenticatorType.values
|
final values = AuthenticatorType.values.where((element) {
|
||||||
.where(
|
// Supabase will going to be removed in the future
|
||||||
(element) =>
|
if (element == AuthenticatorType.supabase) {
|
||||||
isDevelopMode ||
|
return false;
|
||||||
element != AuthenticatorType.appflowyCloudDevelop,
|
}
|
||||||
)
|
|
||||||
.toList();
|
return isDevelopMode || element != AuthenticatorType.appflowyCloudDevelop;
|
||||||
|
}).toList();
|
||||||
return PlatformExtension.isDesktopOrWeb
|
return PlatformExtension.isDesktopOrWeb
|
||||||
? AppFlowyPopover(
|
? AppFlowyPopover(
|
||||||
direction: PopoverDirection.bottomWithRightAligned,
|
direction: PopoverDirection.bottomWithRightAligned,
|
||||||
|
@ -117,7 +117,7 @@ class ShortcutsListTile extends StatelessWidget {
|
|||||||
Expanded(
|
Expanded(
|
||||||
child: FlowyText.medium(
|
child: FlowyText.medium(
|
||||||
key: Key(shortcutEvent.key),
|
key: Key(shortcutEvent.key),
|
||||||
shortcutEvent.key.capitalize(),
|
shortcutEvent.description!.capitalize(),
|
||||||
overflow: TextOverflow.ellipsis,
|
overflow: TextOverflow.ellipsis,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -2,6 +2,7 @@ import 'package:appflowy/generated/locale_keys.g.dart';
|
|||||||
import 'package:appflowy/shared/feature_flags.dart';
|
import 'package:appflowy/shared/feature_flags.dart';
|
||||||
import 'package:appflowy/workspace/application/settings/settings_dialog_bloc.dart';
|
import 'package:appflowy/workspace/application/settings/settings_dialog_bloc.dart';
|
||||||
import 'package:appflowy/workspace/presentation/settings/widgets/settings_menu_element.dart';
|
import 'package:appflowy/workspace/presentation/settings/widgets/settings_menu_element.dart';
|
||||||
|
import 'package:appflowy_backend/protobuf/flowy-user/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';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
@ -12,10 +13,12 @@ class SettingsMenu extends StatelessWidget {
|
|||||||
super.key,
|
super.key,
|
||||||
required this.changeSelectedPage,
|
required this.changeSelectedPage,
|
||||||
required this.currentPage,
|
required this.currentPage,
|
||||||
|
required this.userProfile,
|
||||||
});
|
});
|
||||||
|
|
||||||
final Function changeSelectedPage;
|
final Function changeSelectedPage;
|
||||||
final SettingsPage currentPage;
|
final SettingsPage currentPage;
|
||||||
|
final UserProfilePB userProfile;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -72,7 +75,8 @@ class SettingsMenu extends StatelessWidget {
|
|||||||
icon: Icons.cut,
|
icon: Icons.cut,
|
||||||
changeSelectedPage: changeSelectedPage,
|
changeSelectedPage: changeSelectedPage,
|
||||||
),
|
),
|
||||||
if (FeatureFlag.membersSettings.isOn)
|
if (FeatureFlag.membersSettings.isOn &&
|
||||||
|
userProfile.authenticator == AuthenticatorPB.AppFlowyCloud)
|
||||||
SettingsMenuElement(
|
SettingsMenuElement(
|
||||||
page: SettingsPage.member,
|
page: SettingsPage.member,
|
||||||
selectedPage: currentPage,
|
selectedPage: currentPage,
|
||||||
|
@ -174,85 +174,92 @@ class _AppFlowyDatePickerState extends State<AppFlowyDatePicker> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget buildDesktopPicker() {
|
Widget buildDesktopPicker() {
|
||||||
return Padding(
|
// GestureDetector is a workaround to stop popover from closing
|
||||||
padding: const EdgeInsets.only(top: 18.0, bottom: 12.0),
|
// when clicking on the date picker.
|
||||||
child: Column(
|
return GestureDetector(
|
||||||
mainAxisSize: MainAxisSize.min,
|
behavior: HitTestBehavior.opaque,
|
||||||
children: [
|
onTap: () {},
|
||||||
StartTextField(
|
child: Padding(
|
||||||
includeTime: widget.includeTime,
|
padding: const EdgeInsets.only(top: 18.0, bottom: 12.0),
|
||||||
timeFormat: widget.timeFormat,
|
child: Column(
|
||||||
timeHintText: widget.timeHintText,
|
mainAxisSize: MainAxisSize.min,
|
||||||
parseEndTimeError: widget.parseEndTimeError,
|
children: [
|
||||||
parseTimeError: widget.parseTimeError,
|
StartTextField(
|
||||||
timeStr: widget.timeStr,
|
includeTime: widget.includeTime,
|
||||||
popoverMutex: widget.popoverMutex,
|
timeFormat: widget.timeFormat,
|
||||||
onSubmitted: widget.onStartTimeSubmitted,
|
timeHintText: widget.timeHintText,
|
||||||
),
|
parseEndTimeError: widget.parseEndTimeError,
|
||||||
EndTextField(
|
parseTimeError: widget.parseTimeError,
|
||||||
includeTime: widget.includeTime,
|
timeStr: widget.timeStr,
|
||||||
timeFormat: widget.timeFormat,
|
popoverMutex: widget.popoverMutex,
|
||||||
isRange: widget.isRange,
|
onSubmitted: widget.onStartTimeSubmitted,
|
||||||
endTimeStr: widget.endTimeStr,
|
),
|
||||||
popoverMutex: widget.popoverMutex,
|
EndTextField(
|
||||||
onSubmitted: widget.onEndTimeSubmitted,
|
includeTime: widget.includeTime,
|
||||||
),
|
timeFormat: widget.timeFormat,
|
||||||
DatePicker(
|
|
||||||
isRange: widget.isRange,
|
|
||||||
onDaySelected: (selectedDay, focusedDay) {
|
|
||||||
widget.onDaySelected?.call(selectedDay, focusedDay);
|
|
||||||
|
|
||||||
if (widget.rebuildOnDaySelected) {
|
|
||||||
setState(() => _selectedDay = selectedDay);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onRangeSelected: widget.onRangeSelected,
|
|
||||||
selectedDay:
|
|
||||||
widget.rebuildOnDaySelected ? _selectedDay : widget.selectedDay,
|
|
||||||
firstDay: widget.firstDay,
|
|
||||||
lastDay: widget.lastDay,
|
|
||||||
startDay: widget.startDay,
|
|
||||||
endDay: widget.endDay,
|
|
||||||
onCalendarCreated: widget.onCalendarCreated,
|
|
||||||
onPageChanged: widget.onPageChanged,
|
|
||||||
),
|
|
||||||
const TypeOptionSeparator(spacing: 12.0),
|
|
||||||
if (widget.enableRanges && widget.onIsRangeChanged != null) ...[
|
|
||||||
EndTimeButton(
|
|
||||||
isRange: widget.isRange,
|
isRange: widget.isRange,
|
||||||
onChanged: widget.onIsRangeChanged!,
|
endTimeStr: widget.endTimeStr,
|
||||||
|
popoverMutex: widget.popoverMutex,
|
||||||
|
onSubmitted: widget.onEndTimeSubmitted,
|
||||||
),
|
),
|
||||||
const VSpace(4.0),
|
DatePicker(
|
||||||
],
|
isRange: widget.isRange,
|
||||||
Padding(
|
onDaySelected: (selectedDay, focusedDay) {
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 12.0),
|
widget.onDaySelected?.call(selectedDay, focusedDay);
|
||||||
child: IncludeTimeButton(
|
|
||||||
value: widget.includeTime,
|
if (widget.rebuildOnDaySelected) {
|
||||||
onChanged: widget.onIncludeTimeChanged,
|
setState(() => _selectedDay = selectedDay);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onRangeSelected: widget.onRangeSelected,
|
||||||
|
selectedDay: widget.rebuildOnDaySelected
|
||||||
|
? _selectedDay
|
||||||
|
: widget.selectedDay,
|
||||||
|
firstDay: widget.firstDay,
|
||||||
|
lastDay: widget.lastDay,
|
||||||
|
startDay: widget.startDay,
|
||||||
|
endDay: widget.endDay,
|
||||||
|
onCalendarCreated: widget.onCalendarCreated,
|
||||||
|
onPageChanged: widget.onPageChanged,
|
||||||
|
),
|
||||||
|
const TypeOptionSeparator(spacing: 12.0),
|
||||||
|
if (widget.enableRanges && widget.onIsRangeChanged != null) ...[
|
||||||
|
EndTimeButton(
|
||||||
|
isRange: widget.isRange,
|
||||||
|
onChanged: widget.onIsRangeChanged!,
|
||||||
|
),
|
||||||
|
const VSpace(4.0),
|
||||||
|
],
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 12.0),
|
||||||
|
child: IncludeTimeButton(
|
||||||
|
value: widget.includeTime,
|
||||||
|
onChanged: widget.onIncludeTimeChanged,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
|
||||||
const _GroupSeparator(),
|
|
||||||
ReminderSelector(
|
|
||||||
mutex: widget.popoverMutex,
|
|
||||||
hasTime: widget.includeTime,
|
|
||||||
timeFormat: widget.timeFormat,
|
|
||||||
selectedOption: _selectedReminderOption,
|
|
||||||
onOptionSelected: (option) {
|
|
||||||
setState(() => _selectedReminderOption = option);
|
|
||||||
widget.onReminderSelected?.call(option);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
if (widget.options?.isNotEmpty ?? false) ...[
|
|
||||||
const _GroupSeparator(),
|
const _GroupSeparator(),
|
||||||
ListView.separated(
|
ReminderSelector(
|
||||||
shrinkWrap: true,
|
mutex: widget.popoverMutex,
|
||||||
itemCount: widget.options!.length,
|
hasTime: widget.includeTime,
|
||||||
separatorBuilder: (_, __) => const _GroupSeparator(),
|
timeFormat: widget.timeFormat,
|
||||||
itemBuilder: (_, index) =>
|
selectedOption: _selectedReminderOption,
|
||||||
_renderGroupOptions(widget.options![index].options),
|
onOptionSelected: (option) {
|
||||||
|
setState(() => _selectedReminderOption = option);
|
||||||
|
widget.onReminderSelected?.call(option);
|
||||||
|
},
|
||||||
),
|
),
|
||||||
|
if (widget.options?.isNotEmpty ?? false) ...[
|
||||||
|
const _GroupSeparator(),
|
||||||
|
ListView.separated(
|
||||||
|
shrinkWrap: true,
|
||||||
|
itemCount: widget.options!.length,
|
||||||
|
separatorBuilder: (_, __) => const _GroupSeparator(),
|
||||||
|
itemBuilder: (_, index) =>
|
||||||
|
_renderGroupOptions(widget.options![index].options),
|
||||||
|
),
|
||||||
|
],
|
||||||
],
|
],
|
||||||
],
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:appflowy_backend/protobuf/flowy-database2/date_entities.pbenum.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database2/date_entities.pbenum.dart';
|
||||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/text_field.dart';
|
import 'package:flowy_infra_ui/style_widget/text_field.dart';
|
||||||
|
import 'package:intl/intl.dart';
|
||||||
|
|
||||||
const _maxLengthTwelveHour = 8;
|
const _maxLengthTwelveHour = 8;
|
||||||
const _maxLengthTwentyFourHour = 5;
|
const _maxLengthTwentyFourHour = 5;
|
||||||
@ -55,6 +56,13 @@ class _TimeTextFieldState extends State<TimeTextField> {
|
|||||||
text = widget.endTimeStr!;
|
text = widget.endTimeStr!;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (widget.timeFormat == TimeFormatPB.TwelveHour) {
|
||||||
|
final twentyFourHourFormat = DateFormat('HH:mm');
|
||||||
|
final twelveHourFormat = DateFormat('hh:mm a');
|
||||||
|
final date = twentyFourHourFormat.parse(text);
|
||||||
|
text = twelveHourFormat.format(date);
|
||||||
|
}
|
||||||
|
|
||||||
_focusNode.addListener(_focusNodeListener);
|
_focusNode.addListener(_focusNodeListener);
|
||||||
widget.popoverMutex?.listenOnPopoverChanged(_popoverListener);
|
widget.popoverMutex?.listenOnPopoverChanged(_popoverListener);
|
||||||
}
|
}
|
||||||
@ -86,6 +94,7 @@ class _TimeTextFieldState extends State<TimeTextField> {
|
|||||||
padding: const EdgeInsets.symmetric(horizontal: 18.0),
|
padding: const EdgeInsets.symmetric(horizontal: 18.0),
|
||||||
child: FlowyTextField(
|
child: FlowyTextField(
|
||||||
text: text,
|
text: text,
|
||||||
|
keyboardType: TextInputType.datetime,
|
||||||
focusNode: _focusNode,
|
focusNode: _focusNode,
|
||||||
autoFocus: false,
|
autoFocus: false,
|
||||||
controller: _textController,
|
controller: _textController,
|
||||||
@ -97,7 +106,16 @@ class _TimeTextFieldState extends State<TimeTextField> {
|
|||||||
? _maxLengthTwelveHour
|
? _maxLengthTwelveHour
|
||||||
: _maxLengthTwentyFourHour,
|
: _maxLengthTwentyFourHour,
|
||||||
showCounter: false,
|
showCounter: false,
|
||||||
inputFormatters: [TimeInputFormatter(widget.timeFormat)],
|
inputFormatters: [
|
||||||
|
if (widget.timeFormat == TimeFormatPB.TwelveHour) ...[
|
||||||
|
// Allow for AM/PM if time format is 12-hour
|
||||||
|
FilteringTextInputFormatter.allow(RegExp('[0-9:aApPmM ]')),
|
||||||
|
] else ...[
|
||||||
|
// Default allow for hh:mm format
|
||||||
|
FilteringTextInputFormatter.allow(RegExp('[0-9:]')),
|
||||||
|
],
|
||||||
|
TimeInputFormatter(widget.timeFormat),
|
||||||
|
],
|
||||||
onSubmitted: widget.onSubmitted,
|
onSubmitted: widget.onSubmitted,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@ -134,7 +152,20 @@ class TimeInputFormatter extends TextInputFormatter {
|
|||||||
return _formatText(newText, spacePosition, ' ');
|
return _formatText(newText, spacePosition, ' ');
|
||||||
}
|
}
|
||||||
|
|
||||||
return newValue;
|
if (timeFormat == TimeFormatPB.TwentyFourHour &&
|
||||||
|
newValue.text.length == 5) {
|
||||||
|
final prefix = newValue.text.substring(0, 3);
|
||||||
|
final suffix = newValue.text.length > 5 ? newValue.text.substring(6) : '';
|
||||||
|
|
||||||
|
final minutes = int.tryParse(newValue.text.substring(3, 5));
|
||||||
|
if (minutes == null || minutes <= 0) {
|
||||||
|
return newValue.copyWith(text: '${prefix}00$suffix'.toUpperCase());
|
||||||
|
} else if (minutes > 59) {
|
||||||
|
return newValue.copyWith(text: '${prefix}59$suffix'.toUpperCase());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return newValue.copyWith(text: newText.toUpperCase());
|
||||||
}
|
}
|
||||||
|
|
||||||
TextEditingValue _formatText(String text, int index, String separator) {
|
TextEditingValue _formatText(String text, int index, String separator) {
|
||||||
|
@ -1,10 +1,15 @@
|
|||||||
export 'package:async/async.dart';
|
export 'package:async/async.dart';
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
import 'dart:convert';
|
||||||
import 'package:appflowy_backend/rust_stream.dart';
|
import 'package:appflowy_backend/rust_stream.dart';
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'dart:ffi';
|
import 'dart:ffi';
|
||||||
import 'ffi.dart' as ffi;
|
import 'ffi.dart' as ffi;
|
||||||
import 'package:ffi/ffi.dart';
|
import 'package:ffi/ffi.dart';
|
||||||
|
import 'dart:isolate';
|
||||||
|
import 'dart:io';
|
||||||
|
import 'package:logger/logger.dart';
|
||||||
|
|
||||||
enum ExceptionType {
|
enum ExceptionType {
|
||||||
AppearanceSettingsIsEmpty,
|
AppearanceSettingsIsEmpty,
|
||||||
@ -27,10 +32,15 @@ class FlowySDK {
|
|||||||
Future<void> dispose() async {}
|
Future<void> dispose() async {}
|
||||||
|
|
||||||
Future<void> init(String configuration) async {
|
Future<void> init(String configuration) async {
|
||||||
final port = RustStreamReceiver.shared.port;
|
ffi.set_stream_port(RustStreamReceiver.shared.port);
|
||||||
ffi.set_stream_port(port);
|
|
||||||
ffi.store_dart_post_cobject(NativeApi.postCObject);
|
ffi.store_dart_post_cobject(NativeApi.postCObject);
|
||||||
|
|
||||||
|
// On iOS, VSCode can't print logs from Rust, so we need to use a different method to print logs.
|
||||||
|
// So we use a shared port to receive logs from Rust and print them using the logger. In release mode, we don't print logs.
|
||||||
|
if (Platform.isIOS && kDebugMode) {
|
||||||
|
ffi.set_log_stream_port(RustLogStreamReceiver.logShared.port);
|
||||||
|
}
|
||||||
|
|
||||||
// final completer = Completer<Uint8List>();
|
// final completer = Completer<Uint8List>();
|
||||||
// // Create a SendPort that accepts only one message.
|
// // Create a SendPort that accepts only one message.
|
||||||
// final sendPort = singleCompletePort(completer);
|
// final sendPort = singleCompletePort(completer);
|
||||||
@ -42,3 +52,44 @@ class FlowySDK {
|
|||||||
// return completer.future;
|
// return completer.future;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class RustLogStreamReceiver {
|
||||||
|
static RustLogStreamReceiver logShared = RustLogStreamReceiver._internal();
|
||||||
|
late RawReceivePort _ffiPort;
|
||||||
|
late StreamController<Uint8List> _streamController;
|
||||||
|
late StreamSubscription<Uint8List> _subscription;
|
||||||
|
int get port => _ffiPort.sendPort.nativePort;
|
||||||
|
late Logger _logger;
|
||||||
|
|
||||||
|
RustLogStreamReceiver._internal() {
|
||||||
|
_ffiPort = RawReceivePort();
|
||||||
|
_streamController = StreamController();
|
||||||
|
_ffiPort.handler = _streamController.add;
|
||||||
|
_logger = Logger(
|
||||||
|
printer: PrettyPrinter(
|
||||||
|
methodCount: 0, // number of method calls to be displayed
|
||||||
|
errorMethodCount: 8, // number of method calls if stacktrace is provided
|
||||||
|
lineLength: 120, // width of the output
|
||||||
|
colors: false, // Colorful log messages
|
||||||
|
printEmojis: false, // Print an emoji for each log message
|
||||||
|
printTime: false, // Should each log print contain a timestamp
|
||||||
|
),
|
||||||
|
level: kDebugMode ? Level.trace : Level.info,
|
||||||
|
);
|
||||||
|
|
||||||
|
_subscription = _streamController.stream.listen((data) {
|
||||||
|
String decodedString = utf8.decode(data);
|
||||||
|
_logger.i(decodedString);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
factory RustLogStreamReceiver() {
|
||||||
|
return logShared;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> dispose() async {
|
||||||
|
await _streamController.close();
|
||||||
|
await _subscription.cancel();
|
||||||
|
_ffiPort.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -110,6 +110,22 @@ typedef _set_stream_port_Dart = int Function(
|
|||||||
int port,
|
int port,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/// C function `set log stream port`.
|
||||||
|
int set_log_stream_port(int port) {
|
||||||
|
return _set_log_stream_port(port);
|
||||||
|
}
|
||||||
|
|
||||||
|
final _set_log_stream_port_Dart _set_log_stream_port = _dart_ffi_lib
|
||||||
|
.lookupFunction<_set_log_stream_port_C, _set_log_stream_port_Dart>(
|
||||||
|
'set_log_stream_port');
|
||||||
|
|
||||||
|
typedef _set_log_stream_port_C = Int32 Function(
|
||||||
|
Int64 port,
|
||||||
|
);
|
||||||
|
typedef _set_log_stream_port_Dart = int Function(
|
||||||
|
int port,
|
||||||
|
);
|
||||||
|
|
||||||
/// C function `link_me_please`.
|
/// C function `link_me_please`.
|
||||||
void link_me_please() {
|
void link_me_please() {
|
||||||
_link_me_please();
|
_link_me_please();
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
// ignore: import_of_legacy_library_into_null_safe
|
// ignore: import_of_legacy_library_into_null_safe
|
||||||
import 'dart:ffi';
|
import 'dart:ffi';
|
||||||
|
|
||||||
import 'package:ffi/ffi.dart' as ffi;
|
import 'package:ffi/ffi.dart' as ffi;
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:logger/logger.dart';
|
import 'package:logger/logger.dart';
|
||||||
|
@ -2,7 +2,6 @@ import 'dart:async';
|
|||||||
import 'dart:ffi';
|
import 'dart:ffi';
|
||||||
import 'dart:isolate';
|
import 'dart:isolate';
|
||||||
import 'dart:typed_data';
|
import 'dart:typed_data';
|
||||||
|
|
||||||
import 'package:appflowy_backend/log.dart';
|
import 'package:appflowy_backend/log.dart';
|
||||||
|
|
||||||
import 'protobuf/flowy-notification/subject.pb.dart';
|
import 'protobuf/flowy-notification/subject.pb.dart';
|
||||||
|
@ -11,6 +11,8 @@ const uint8_t *sync_event(const uint8_t *input, uintptr_t len);
|
|||||||
|
|
||||||
int32_t set_stream_port(int64_t port);
|
int32_t set_stream_port(int64_t port);
|
||||||
|
|
||||||
|
int32_t set_log_stream_port(int64_t port);
|
||||||
|
|
||||||
void link_me_please(void);
|
void link_me_please(void);
|
||||||
|
|
||||||
void rust_log(int64_t level, const char *data);
|
void rust_log(int64_t level, const char *data);
|
||||||
|
@ -15,6 +15,7 @@ class FlowyText extends StatelessWidget {
|
|||||||
final String? fontFamily;
|
final String? fontFamily;
|
||||||
final List<String>? fallbackFontFamily;
|
final List<String>? fallbackFontFamily;
|
||||||
final double? lineHeight;
|
final double? lineHeight;
|
||||||
|
final bool withTooltip;
|
||||||
|
|
||||||
const FlowyText(
|
const FlowyText(
|
||||||
this.text, {
|
this.text, {
|
||||||
@ -30,6 +31,7 @@ class FlowyText extends StatelessWidget {
|
|||||||
this.fontFamily,
|
this.fontFamily,
|
||||||
this.fallbackFontFamily,
|
this.fallbackFontFamily,
|
||||||
this.lineHeight,
|
this.lineHeight,
|
||||||
|
this.withTooltip = false,
|
||||||
});
|
});
|
||||||
|
|
||||||
FlowyText.small(
|
FlowyText.small(
|
||||||
@ -44,6 +46,7 @@ class FlowyText extends StatelessWidget {
|
|||||||
this.fontFamily,
|
this.fontFamily,
|
||||||
this.fallbackFontFamily,
|
this.fallbackFontFamily,
|
||||||
this.lineHeight,
|
this.lineHeight,
|
||||||
|
this.withTooltip = false,
|
||||||
}) : fontWeight = FontWeight.w400,
|
}) : fontWeight = FontWeight.w400,
|
||||||
fontSize = (Platform.isIOS || Platform.isAndroid) ? 14 : 12;
|
fontSize = (Platform.isIOS || Platform.isAndroid) ? 14 : 12;
|
||||||
|
|
||||||
@ -60,6 +63,7 @@ class FlowyText extends StatelessWidget {
|
|||||||
this.fontFamily,
|
this.fontFamily,
|
||||||
this.fallbackFontFamily,
|
this.fallbackFontFamily,
|
||||||
this.lineHeight,
|
this.lineHeight,
|
||||||
|
this.withTooltip = false,
|
||||||
}) : fontWeight = FontWeight.w400;
|
}) : fontWeight = FontWeight.w400;
|
||||||
|
|
||||||
const FlowyText.medium(
|
const FlowyText.medium(
|
||||||
@ -75,6 +79,7 @@ class FlowyText extends StatelessWidget {
|
|||||||
this.fontFamily,
|
this.fontFamily,
|
||||||
this.fallbackFontFamily,
|
this.fallbackFontFamily,
|
||||||
this.lineHeight,
|
this.lineHeight,
|
||||||
|
this.withTooltip = false,
|
||||||
}) : fontWeight = FontWeight.w500;
|
}) : fontWeight = FontWeight.w500;
|
||||||
|
|
||||||
const FlowyText.semibold(
|
const FlowyText.semibold(
|
||||||
@ -90,6 +95,7 @@ class FlowyText extends StatelessWidget {
|
|||||||
this.fontFamily,
|
this.fontFamily,
|
||||||
this.fallbackFontFamily,
|
this.fallbackFontFamily,
|
||||||
this.lineHeight,
|
this.lineHeight,
|
||||||
|
this.withTooltip = false,
|
||||||
}) : fontWeight = FontWeight.w600;
|
}) : fontWeight = FontWeight.w600;
|
||||||
|
|
||||||
// Some emojis are not supported on Linux and Android, fallback to noto color emoji
|
// Some emojis are not supported on Linux and Android, fallback to noto color emoji
|
||||||
@ -104,14 +110,17 @@ class FlowyText extends StatelessWidget {
|
|||||||
this.decoration,
|
this.decoration,
|
||||||
this.selectable = false,
|
this.selectable = false,
|
||||||
this.lineHeight,
|
this.lineHeight,
|
||||||
|
this.withTooltip = false,
|
||||||
}) : fontWeight = FontWeight.w400,
|
}) : fontWeight = FontWeight.w400,
|
||||||
fontFamily = 'noto color emoji',
|
fontFamily = 'noto color emoji',
|
||||||
fallbackFontFamily = null;
|
fallbackFontFamily = null;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
Widget child;
|
||||||
|
|
||||||
if (selectable) {
|
if (selectable) {
|
||||||
return SelectableText(
|
child = SelectableText(
|
||||||
text,
|
text,
|
||||||
maxLines: maxLines,
|
maxLines: maxLines,
|
||||||
textAlign: textAlign,
|
textAlign: textAlign,
|
||||||
@ -126,7 +135,7 @@ class FlowyText extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
return Text(
|
child = Text(
|
||||||
text,
|
text,
|
||||||
maxLines: maxLines,
|
maxLines: maxLines,
|
||||||
textAlign: textAlign,
|
textAlign: textAlign,
|
||||||
@ -142,5 +151,14 @@ class FlowyText extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (withTooltip) {
|
||||||
|
child = Tooltip(
|
||||||
|
message: text,
|
||||||
|
child: child,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return child;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:flowy_infra/size.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
|
||||||
|
import 'package:flowy_infra/size.dart';
|
||||||
|
|
||||||
class FlowyTextField extends StatefulWidget {
|
class FlowyTextField extends StatefulWidget {
|
||||||
final String? hintText;
|
final String? hintText;
|
||||||
final String? text;
|
final String? text;
|
||||||
@ -31,6 +32,7 @@ class FlowyTextField extends StatefulWidget {
|
|||||||
final TextStyle? hintStyle;
|
final TextStyle? hintStyle;
|
||||||
final InputDecoration? decoration;
|
final InputDecoration? decoration;
|
||||||
final TextAlignVertical? textAlignVertical;
|
final TextAlignVertical? textAlignVertical;
|
||||||
|
final TextInputAction? textInputAction;
|
||||||
final TextInputType? keyboardType;
|
final TextInputType? keyboardType;
|
||||||
final List<TextInputFormatter>? inputFormatters;
|
final List<TextInputFormatter>? inputFormatters;
|
||||||
|
|
||||||
@ -62,6 +64,7 @@ class FlowyTextField extends StatefulWidget {
|
|||||||
this.hintStyle,
|
this.hintStyle,
|
||||||
this.decoration,
|
this.decoration,
|
||||||
this.textAlignVertical,
|
this.textAlignVertical,
|
||||||
|
this.textInputAction,
|
||||||
this.keyboardType = TextInputType.multiline,
|
this.keyboardType = TextInputType.multiline,
|
||||||
this.inputFormatters,
|
this.inputFormatters,
|
||||||
});
|
});
|
||||||
|
@ -53,8 +53,8 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: b927ec0
|
ref: c8cd407
|
||||||
resolved-ref: b927ec0685c870c731c5b6d9688a031d0cd31e76
|
resolved-ref: c8cd4071e36ca6b1fb6d9ef803abb61e9a743c8b
|
||||||
url: "https://github.com/AppFlowy-IO/appflowy-editor.git"
|
url: "https://github.com/AppFlowy-IO/appflowy-editor.git"
|
||||||
source: git
|
source: git
|
||||||
version: "2.3.3"
|
version: "2.3.3"
|
||||||
|
@ -169,7 +169,7 @@ dependency_overrides:
|
|||||||
appflowy_editor:
|
appflowy_editor:
|
||||||
git:
|
git:
|
||||||
url: https://github.com/AppFlowy-IO/appflowy-editor.git
|
url: https://github.com/AppFlowy-IO/appflowy-editor.git
|
||||||
ref: "b927ec0"
|
ref: "c8cd407"
|
||||||
|
|
||||||
sheet:
|
sheet:
|
||||||
git:
|
git:
|
||||||
|
166
frontend/appflowy_tauri/src-tauri/Cargo.lock
generated
166
frontend/appflowy_tauri/src-tauri/Cargo.lock
generated
@ -156,7 +156,7 @@ checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca"
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "app-error"
|
name = "app-error"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bincode",
|
"bincode",
|
||||||
@ -712,7 +712,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "client-api"
|
name = "client-api"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"again",
|
"again",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
@ -733,7 +733,6 @@ dependencies = [
|
|||||||
"getrandom 0.2.10",
|
"getrandom 0.2.10",
|
||||||
"gotrue",
|
"gotrue",
|
||||||
"gotrue-entity",
|
"gotrue-entity",
|
||||||
"governor",
|
|
||||||
"mime",
|
"mime",
|
||||||
"parking_lot 0.12.1",
|
"parking_lot 0.12.1",
|
||||||
"prost",
|
"prost",
|
||||||
@ -752,14 +751,13 @@ dependencies = [
|
|||||||
"url",
|
"url",
|
||||||
"uuid",
|
"uuid",
|
||||||
"wasm-bindgen-futures",
|
"wasm-bindgen-futures",
|
||||||
"workspace-template",
|
|
||||||
"yrs",
|
"yrs",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "client-websocket"
|
name = "client-websocket"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-channel",
|
"futures-channel",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
@ -833,7 +831,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab"
|
name = "collab"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
@ -857,7 +855,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-database"
|
name = "collab-database"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
@ -887,7 +885,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-document"
|
name = "collab-document"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"collab",
|
"collab",
|
||||||
@ -906,7 +904,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-entity"
|
name = "collab-entity"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bytes",
|
"bytes",
|
||||||
@ -921,7 +919,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-folder"
|
name = "collab-folder"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"chrono",
|
"chrono",
|
||||||
@ -959,7 +957,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-plugins"
|
name = "collab-plugins"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-stream",
|
"async-stream",
|
||||||
@ -998,7 +996,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-rt-entity"
|
name = "collab-rt-entity"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bincode",
|
"bincode",
|
||||||
@ -1023,7 +1021,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-rt-protocol"
|
name = "collab-rt-protocol"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bincode",
|
"bincode",
|
||||||
@ -1037,7 +1035,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-user"
|
name = "collab-user"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"collab",
|
"collab",
|
||||||
@ -1096,9 +1094,9 @@ checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cookie"
|
name = "cookie"
|
||||||
version = "0.16.2"
|
version = "0.17.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb"
|
checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
"time",
|
"time",
|
||||||
@ -1107,12 +1105,12 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cookie_store"
|
name = "cookie_store"
|
||||||
version = "0.16.2"
|
version = "0.20.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d606d0fba62e13cf04db20536c05cb7f13673c161cb47a47a82b9b9e7d3f1daa"
|
checksum = "387461abbc748185c3a6e1673d826918b450b87ff22639429c694619a83b6cf6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cookie",
|
"cookie",
|
||||||
"idna 0.2.3",
|
"idna 0.3.0",
|
||||||
"log",
|
"log",
|
||||||
"publicsuffix",
|
"publicsuffix",
|
||||||
"serde",
|
"serde",
|
||||||
@ -1260,7 +1258,7 @@ dependencies = [
|
|||||||
"cssparser-macros",
|
"cssparser-macros",
|
||||||
"dtoa-short",
|
"dtoa-short",
|
||||||
"itoa 1.0.6",
|
"itoa 1.0.6",
|
||||||
"phf 0.8.0",
|
"phf 0.11.2",
|
||||||
"smallvec",
|
"smallvec",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -1371,7 +1369,7 @@ checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308"
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "database-entity"
|
name = "database-entity"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"app-error",
|
"app-error",
|
||||||
@ -2352,12 +2350,6 @@ version = "0.3.30"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
|
checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "futures-timer"
|
|
||||||
version = "3.0.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-util"
|
name = "futures-util"
|
||||||
version = "0.3.30"
|
version = "0.3.30"
|
||||||
@ -2687,7 +2679,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "gotrue"
|
name = "gotrue"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
@ -2704,7 +2696,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "gotrue-entity"
|
name = "gotrue-entity"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"app-error",
|
"app-error",
|
||||||
@ -2715,24 +2707,6 @@ dependencies = [
|
|||||||
"serde_json",
|
"serde_json",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "governor"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "821239e5672ff23e2a7060901fa622950bbd80b649cdaadd78d1c1767ed14eb4"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"dashmap",
|
|
||||||
"futures",
|
|
||||||
"futures-timer",
|
|
||||||
"no-std-compat",
|
|
||||||
"nonzero_ext",
|
|
||||||
"parking_lot 0.12.1",
|
|
||||||
"quanta",
|
|
||||||
"rand 0.8.5",
|
|
||||||
"smallvec",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gtk"
|
name = "gtk"
|
||||||
version = "0.15.5"
|
version = "0.15.5"
|
||||||
@ -3027,17 +3001,6 @@ version = "1.0.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "idna"
|
|
||||||
version = "0.2.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"
|
|
||||||
dependencies = [
|
|
||||||
"matches",
|
|
||||||
"unicode-bidi",
|
|
||||||
"unicode-normalization",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
@ -3155,7 +3118,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "infra"
|
name = "infra"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
@ -3399,6 +3362,7 @@ version = "0.1.0"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"chrono",
|
"chrono",
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
|
"lib-infra",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"tracing",
|
"tracing",
|
||||||
@ -3519,15 +3483,6 @@ version = "0.1.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
|
checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "mach2"
|
|
||||||
version = "0.4.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709"
|
|
||||||
dependencies = [
|
|
||||||
"libc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "macroific"
|
name = "macroific"
|
||||||
version = "1.3.1"
|
version = "1.3.1"
|
||||||
@ -3788,12 +3743,6 @@ version = "1.0.4"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
|
checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "no-std-compat"
|
|
||||||
version = "0.4.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nodrop"
|
name = "nodrop"
|
||||||
version = "0.1.14"
|
version = "0.1.14"
|
||||||
@ -3810,12 +3759,6 @@ dependencies = [
|
|||||||
"minimal-lexical",
|
"minimal-lexical",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "nonzero_ext"
|
|
||||||
version = "0.3.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ntapi"
|
name = "ntapi"
|
||||||
version = "0.4.1"
|
version = "0.4.1"
|
||||||
@ -4759,22 +4702,6 @@ dependencies = [
|
|||||||
"psl-types",
|
"psl-types",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "quanta"
|
|
||||||
version = "0.11.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a17e662a7a8291a865152364c20c7abc5e60486ab2001e8ec10b24862de0b9ab"
|
|
||||||
dependencies = [
|
|
||||||
"crossbeam-utils",
|
|
||||||
"libc",
|
|
||||||
"mach2",
|
|
||||||
"once_cell",
|
|
||||||
"raw-cpuid",
|
|
||||||
"wasi 0.11.0+wasi-snapshot-preview1",
|
|
||||||
"web-sys",
|
|
||||||
"winapi",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quick-xml"
|
name = "quick-xml"
|
||||||
version = "0.28.2"
|
version = "0.28.2"
|
||||||
@ -4891,15 +4818,6 @@ dependencies = [
|
|||||||
"rand_core 0.5.1",
|
"rand_core 0.5.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "raw-cpuid"
|
|
||||||
version = "10.7.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags 1.3.2",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "raw-window-handle"
|
name = "raw-window-handle"
|
||||||
version = "0.5.2"
|
version = "0.5.2"
|
||||||
@ -5013,9 +4931,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "reqwest"
|
name = "reqwest"
|
||||||
version = "0.11.23"
|
version = "0.11.27"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41"
|
checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64 0.21.5",
|
"base64 0.21.5",
|
||||||
"bytes",
|
"bytes",
|
||||||
@ -5044,6 +4962,7 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"serde_urlencoded",
|
"serde_urlencoded",
|
||||||
|
"sync_wrapper",
|
||||||
"system-configuration",
|
"system-configuration",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tokio-native-tls",
|
"tokio-native-tls",
|
||||||
@ -5599,7 +5518,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "shared-entity"
|
name = "shared-entity"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"app-error",
|
"app-error",
|
||||||
@ -5865,6 +5784,12 @@ dependencies = [
|
|||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "sync_wrapper"
|
||||||
|
version = "0.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "sysinfo"
|
name = "sysinfo"
|
||||||
version = "0.30.5"
|
version = "0.30.5"
|
||||||
@ -7050,9 +6975,9 @@ checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasm-streams"
|
name = "wasm-streams"
|
||||||
version = "0.3.0"
|
version = "0.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7"
|
checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"js-sys",
|
"js-sys",
|
||||||
@ -7584,27 +7509,6 @@ dependencies = [
|
|||||||
"windows-sys 0.48.0",
|
"windows-sys 0.48.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "workspace-template"
|
|
||||||
version = "0.1.0"
|
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
|
||||||
dependencies = [
|
|
||||||
"anyhow",
|
|
||||||
"async-trait",
|
|
||||||
"bytes",
|
|
||||||
"collab",
|
|
||||||
"collab-document",
|
|
||||||
"collab-entity",
|
|
||||||
"collab-folder",
|
|
||||||
"getrandom 0.2.10",
|
|
||||||
"indexmap 2.1.0",
|
|
||||||
"nanoid",
|
|
||||||
"serde",
|
|
||||||
"serde_json",
|
|
||||||
"tokio",
|
|
||||||
"uuid",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wry"
|
name = "wry"
|
||||||
version = "0.24.6"
|
version = "0.24.6"
|
||||||
|
@ -87,7 +87,7 @@ yrs = { git = "https://github.com/appflowy/y-crdt", rev = "3f25bb510ca5274e7657d
|
|||||||
# Run the script:
|
# Run the script:
|
||||||
# scripts/tool/update_client_api_rev.sh new_rev_id
|
# scripts/tool/update_client_api_rev.sh new_rev_id
|
||||||
# ⚠️⚠️⚠️️
|
# ⚠️⚠️⚠️️
|
||||||
client-api = { git = "https://github.com/AppFlowy-IO/AppFlowy-Cloud", rev = "aa4df32f6d3b53bec5e3715f5abfe4fb9079021b" }
|
client-api = { git = "https://github.com/AppFlowy-IO/AppFlowy-Cloud", rev = "4c002360698c978256ff324ebeed20506e79b3fc" }
|
||||||
# Please use the following script to update collab.
|
# Please use the following script to update collab.
|
||||||
# Working directory: frontend
|
# Working directory: frontend
|
||||||
#
|
#
|
||||||
@ -97,10 +97,10 @@ client-api = { git = "https://github.com/AppFlowy-IO/AppFlowy-Cloud", rev = "aa4
|
|||||||
# To switch to the local path, run:
|
# To switch to the local path, run:
|
||||||
# scripts/tool/update_collab_source.sh
|
# scripts/tool/update_collab_source.sh
|
||||||
# ⚠️⚠️⚠️️
|
# ⚠️⚠️⚠️️
|
||||||
collab = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-folder = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-folder = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-document = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-document = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-database = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-database = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-plugins = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-plugins = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-user = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-user = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-entity = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-entity = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
|
@ -9,19 +9,19 @@ pub fn read_env() {
|
|||||||
dotenv().ok();
|
dotenv().ok();
|
||||||
|
|
||||||
let env = if cfg!(debug_assertions) {
|
let env = if cfg!(debug_assertions) {
|
||||||
include_str!("../env.development")
|
include_str!("../env.development")
|
||||||
} else {
|
} else {
|
||||||
include_str!("../env.production")
|
include_str!("../env.production")
|
||||||
};
|
};
|
||||||
|
|
||||||
for line in env.lines() {
|
for line in env.lines() {
|
||||||
if let Some((key, value)) = line.split_once('=') {
|
if let Some((key, value)) = line.split_once('=') {
|
||||||
// Check if the environment variable is not already set in the system
|
// Check if the environment variable is not already set in the system
|
||||||
let current_value = std::env::var(key).unwrap_or_default();
|
let current_value = std::env::var(key).unwrap_or_default();
|
||||||
if current_value.is_empty() {
|
if current_value.is_empty() {
|
||||||
std::env::set_var(key, value);
|
std::env::set_var(key, value);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,7 +29,12 @@ pub fn init_flowy_core() -> AppFlowyCore {
|
|||||||
let config_json = include_str!("../tauri.conf.json");
|
let config_json = include_str!("../tauri.conf.json");
|
||||||
let config: tauri_utils::config::Config = serde_json::from_str(config_json).unwrap();
|
let config: tauri_utils::config::Config = serde_json::from_str(config_json).unwrap();
|
||||||
|
|
||||||
let app_version = config.package.version.clone().map(|v| v.to_string()).unwrap_or_else(|| "0.0.0".to_string());
|
let app_version = config
|
||||||
|
.package
|
||||||
|
.version
|
||||||
|
.clone()
|
||||||
|
.map(|v| v.to_string())
|
||||||
|
.unwrap_or_else(|| "0.0.0".to_string());
|
||||||
let mut data_path = tauri::api::path::app_local_data_dir(&config).unwrap();
|
let mut data_path = tauri::api::path::app_local_data_dir(&config).unwrap();
|
||||||
if cfg!(debug_assertions) {
|
if cfg!(debug_assertions) {
|
||||||
data_path.push("data_dev");
|
data_path.push("data_dev");
|
||||||
@ -49,11 +54,12 @@ pub fn init_flowy_core() -> AppFlowyCore {
|
|||||||
custom_application_path,
|
custom_application_path,
|
||||||
application_path,
|
application_path,
|
||||||
device_id,
|
device_id,
|
||||||
|
"tauri".to_string(),
|
||||||
DEFAULT_NAME.to_string(),
|
DEFAULT_NAME.to_string(),
|
||||||
)
|
)
|
||||||
.log_filter("trace", vec!["appflowy_tauri".to_string()]);
|
.log_filter("trace", vec!["appflowy_tauri".to_string()]);
|
||||||
|
|
||||||
let runtime = Arc::new(AFPluginRuntime::new().unwrap());
|
let runtime = Arc::new(AFPluginRuntime::new().unwrap());
|
||||||
let cloned_runtime = runtime.clone();
|
let cloned_runtime = runtime.clone();
|
||||||
runtime.block_on(async move { AppFlowyCore::new(config, cloned_runtime).await })
|
runtime.block_on(async move { AppFlowyCore::new(config, cloned_runtime, None).await })
|
||||||
}
|
}
|
||||||
|
180
frontend/appflowy_web/wasm-libs/Cargo.lock
generated
180
frontend/appflowy_web/wasm-libs/Cargo.lock
generated
@ -215,7 +215,7 @@ checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca"
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "app-error"
|
name = "app-error"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bincode",
|
"bincode",
|
||||||
@ -378,9 +378,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "brotli"
|
name = "brotli"
|
||||||
version = "3.4.0"
|
version = "3.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f"
|
checksum = "d640d25bc63c50fb1f0b545ffd80207d2e10a4c965530809b40ba3386825c391"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"alloc-no-stdlib",
|
"alloc-no-stdlib",
|
||||||
"alloc-stdlib",
|
"alloc-stdlib",
|
||||||
@ -541,7 +541,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "client-api"
|
name = "client-api"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"again",
|
"again",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
@ -562,7 +562,6 @@ dependencies = [
|
|||||||
"getrandom 0.2.12",
|
"getrandom 0.2.12",
|
||||||
"gotrue",
|
"gotrue",
|
||||||
"gotrue-entity",
|
"gotrue-entity",
|
||||||
"governor",
|
|
||||||
"mime",
|
"mime",
|
||||||
"parking_lot 0.12.1",
|
"parking_lot 0.12.1",
|
||||||
"prost",
|
"prost",
|
||||||
@ -587,7 +586,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "client-websocket"
|
name = "client-websocket"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-channel",
|
"futures-channel",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
@ -631,7 +630,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab"
|
name = "collab"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
@ -655,7 +654,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-document"
|
name = "collab-document"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"collab",
|
"collab",
|
||||||
@ -674,7 +673,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-entity"
|
name = "collab-entity"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bytes",
|
"bytes",
|
||||||
@ -689,7 +688,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-folder"
|
name = "collab-folder"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"chrono",
|
"chrono",
|
||||||
@ -727,7 +726,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-plugins"
|
name = "collab-plugins"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-stream",
|
"async-stream",
|
||||||
@ -765,7 +764,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-rt-entity"
|
name = "collab-rt-entity"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bincode",
|
"bincode",
|
||||||
@ -790,7 +789,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-rt-protocol"
|
name = "collab-rt-protocol"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bincode",
|
"bincode",
|
||||||
@ -804,7 +803,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-user"
|
name = "collab-user"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"collab",
|
"collab",
|
||||||
@ -851,9 +850,9 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cookie"
|
name = "cookie"
|
||||||
version = "0.16.2"
|
version = "0.17.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb"
|
checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
"time",
|
"time",
|
||||||
@ -862,12 +861,12 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cookie_store"
|
name = "cookie_store"
|
||||||
version = "0.16.2"
|
version = "0.20.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d606d0fba62e13cf04db20536c05cb7f13673c161cb47a47a82b9b9e7d3f1daa"
|
checksum = "387461abbc748185c3a6e1673d826918b450b87ff22639429c694619a83b6cf6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cookie",
|
"cookie",
|
||||||
"idna 0.2.3",
|
"idna 0.3.0",
|
||||||
"log",
|
"log",
|
||||||
"publicsuffix",
|
"publicsuffix",
|
||||||
"serde",
|
"serde",
|
||||||
@ -956,7 +955,7 @@ dependencies = [
|
|||||||
"cssparser-macros",
|
"cssparser-macros",
|
||||||
"dtoa-short",
|
"dtoa-short",
|
||||||
"itoa",
|
"itoa",
|
||||||
"phf 0.11.2",
|
"phf 0.8.0",
|
||||||
"smallvec",
|
"smallvec",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -1001,7 +1000,7 @@ checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5"
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "database-entity"
|
name = "database-entity"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"app-error",
|
"app-error",
|
||||||
@ -1629,12 +1628,6 @@ version = "0.3.30"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
|
checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "futures-timer"
|
|
||||||
version = "3.0.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-util"
|
name = "futures-util"
|
||||||
version = "0.3.30"
|
version = "0.3.30"
|
||||||
@ -1769,7 +1762,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "gotrue"
|
name = "gotrue"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
@ -1786,7 +1779,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "gotrue-entity"
|
name = "gotrue-entity"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"app-error",
|
"app-error",
|
||||||
@ -1797,24 +1790,6 @@ dependencies = [
|
|||||||
"serde_json",
|
"serde_json",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "governor"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "821239e5672ff23e2a7060901fa622950bbd80b649cdaadd78d1c1767ed14eb4"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if 1.0.0",
|
|
||||||
"dashmap",
|
|
||||||
"futures",
|
|
||||||
"futures-timer",
|
|
||||||
"no-std-compat",
|
|
||||||
"nonzero_ext",
|
|
||||||
"parking_lot 0.12.1",
|
|
||||||
"quanta",
|
|
||||||
"rand 0.8.5",
|
|
||||||
"smallvec",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "h2"
|
name = "h2"
|
||||||
version = "0.3.24"
|
version = "0.3.24"
|
||||||
@ -2022,17 +1997,6 @@ dependencies = [
|
|||||||
"cc",
|
"cc",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "idna"
|
|
||||||
version = "0.2.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"
|
|
||||||
dependencies = [
|
|
||||||
"matches",
|
|
||||||
"unicode-bidi",
|
|
||||||
"unicode-normalization",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
@ -2116,7 +2080,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "infra"
|
name = "infra"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
@ -2342,15 +2306,6 @@ version = "0.1.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
|
checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "mach2"
|
|
||||||
version = "0.4.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709"
|
|
||||||
dependencies = [
|
|
||||||
"libc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "macroific"
|
name = "macroific"
|
||||||
version = "1.3.1"
|
version = "1.3.1"
|
||||||
@ -2412,12 +2367,6 @@ dependencies = [
|
|||||||
"tendril",
|
"tendril",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "matches"
|
|
||||||
version = "0.1.10"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "md5"
|
name = "md5"
|
||||||
version = "0.7.0"
|
version = "0.7.0"
|
||||||
@ -2517,12 +2466,6 @@ version = "1.0.4"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
|
checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "no-std-compat"
|
|
||||||
version = "0.4.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nom"
|
name = "nom"
|
||||||
version = "7.1.3"
|
version = "7.1.3"
|
||||||
@ -2533,12 +2476,6 @@ dependencies = [
|
|||||||
"minimal-lexical",
|
"minimal-lexical",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "nonzero_ext"
|
|
||||||
version = "0.3.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-bigint"
|
name = "num-bigint"
|
||||||
version = "0.4.4"
|
version = "0.4.4"
|
||||||
@ -2569,16 +2506,6 @@ dependencies = [
|
|||||||
"autocfg",
|
"autocfg",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "num_cpus"
|
|
||||||
version = "1.16.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
|
|
||||||
dependencies = [
|
|
||||||
"hermit-abi",
|
|
||||||
"libc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "object"
|
name = "object"
|
||||||
version = "0.32.2"
|
version = "0.32.2"
|
||||||
@ -2836,7 +2763,7 @@ version = "0.8.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12"
|
checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"phf_macros 0.8.0",
|
"phf_macros",
|
||||||
"phf_shared 0.8.0",
|
"phf_shared 0.8.0",
|
||||||
"proc-macro-hack",
|
"proc-macro-hack",
|
||||||
]
|
]
|
||||||
@ -2856,7 +2783,6 @@ version = "0.11.2"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc"
|
checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"phf_macros 0.11.2",
|
|
||||||
"phf_shared 0.11.2",
|
"phf_shared 0.11.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -2924,19 +2850,6 @@ dependencies = [
|
|||||||
"syn 1.0.109",
|
"syn 1.0.109",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "phf_macros"
|
|
||||||
version = "0.11.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b"
|
|
||||||
dependencies = [
|
|
||||||
"phf_generator 0.11.2",
|
|
||||||
"phf_shared 0.11.2",
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"syn 2.0.48",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "phf_shared"
|
name = "phf_shared"
|
||||||
version = "0.8.0"
|
version = "0.8.0"
|
||||||
@ -3247,22 +3160,6 @@ dependencies = [
|
|||||||
"psl-types",
|
"psl-types",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "quanta"
|
|
||||||
version = "0.11.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a17e662a7a8291a865152364c20c7abc5e60486ab2001e8ec10b24862de0b9ab"
|
|
||||||
dependencies = [
|
|
||||||
"crossbeam-utils",
|
|
||||||
"libc",
|
|
||||||
"mach2",
|
|
||||||
"once_cell",
|
|
||||||
"raw-cpuid",
|
|
||||||
"wasi 0.11.0+wasi-snapshot-preview1",
|
|
||||||
"web-sys",
|
|
||||||
"winapi",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quote"
|
name = "quote"
|
||||||
version = "1.0.35"
|
version = "1.0.35"
|
||||||
@ -3353,15 +3250,6 @@ dependencies = [
|
|||||||
"rand_core 0.5.1",
|
"rand_core 0.5.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "raw-cpuid"
|
|
||||||
version = "10.7.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags 1.3.2",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "redox_syscall"
|
name = "redox_syscall"
|
||||||
version = "0.1.57"
|
version = "0.1.57"
|
||||||
@ -3417,9 +3305,9 @@ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "reqwest"
|
name = "reqwest"
|
||||||
version = "0.11.23"
|
version = "0.11.27"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41"
|
checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64 0.21.7",
|
"base64 0.21.7",
|
||||||
"bytes",
|
"bytes",
|
||||||
@ -3448,6 +3336,7 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"serde_urlencoded",
|
"serde_urlencoded",
|
||||||
|
"sync_wrapper",
|
||||||
"system-configuration",
|
"system-configuration",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tokio-native-tls",
|
"tokio-native-tls",
|
||||||
@ -3816,7 +3705,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "shared-entity"
|
name = "shared-entity"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"app-error",
|
"app-error",
|
||||||
@ -4009,6 +3898,12 @@ dependencies = [
|
|||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "sync_wrapper"
|
||||||
|
version = "0.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "system-configuration"
|
name = "system-configuration"
|
||||||
version = "0.5.1"
|
version = "0.5.1"
|
||||||
@ -4190,7 +4085,6 @@ dependencies = [
|
|||||||
"bytes",
|
"bytes",
|
||||||
"libc",
|
"libc",
|
||||||
"mio",
|
"mio",
|
||||||
"num_cpus",
|
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"socket2",
|
"socket2",
|
||||||
"tokio-macros",
|
"tokio-macros",
|
||||||
@ -4738,9 +4632,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasm-streams"
|
name = "wasm-streams"
|
||||||
version = "0.3.0"
|
version = "0.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7"
|
checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"js-sys",
|
"js-sys",
|
||||||
@ -5073,4 +4967,4 @@ dependencies = [
|
|||||||
[[patch.unused]]
|
[[patch.unused]]
|
||||||
name = "collab-database"
|
name = "collab-database"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
|
@ -55,7 +55,7 @@ codegen-units = 1
|
|||||||
# Run the script:
|
# Run the script:
|
||||||
# scripts/tool/update_client_api_rev.sh new_rev_id
|
# scripts/tool/update_client_api_rev.sh new_rev_id
|
||||||
# ⚠️⚠️⚠️️
|
# ⚠️⚠️⚠️️
|
||||||
client-api = { git = "https://github.com/AppFlowy-IO/AppFlowy-Cloud", rev = "aa4df32f6d3b53bec5e3715f5abfe4fb9079021b" }
|
client-api = { git = "https://github.com/AppFlowy-IO/AppFlowy-Cloud", rev = "4c002360698c978256ff324ebeed20506e79b3fc" }
|
||||||
# Please use the following script to update collab.
|
# Please use the following script to update collab.
|
||||||
# Working directory: frontend
|
# Working directory: frontend
|
||||||
#
|
#
|
||||||
@ -65,10 +65,10 @@ client-api = { git = "https://github.com/AppFlowy-IO/AppFlowy-Cloud", rev = "aa4
|
|||||||
# To switch to the local path, run:
|
# To switch to the local path, run:
|
||||||
# scripts/tool/update_collab_source.sh
|
# scripts/tool/update_collab_source.sh
|
||||||
# ⚠️⚠️⚠️️
|
# ⚠️⚠️⚠️️
|
||||||
collab = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-folder = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-folder = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-document = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-document = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-database = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-database = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-plugins = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-plugins = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-user = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-user = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-entity = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-entity = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
|
@ -14,7 +14,7 @@ flowy-user-pub = { workspace = true }
|
|||||||
strum_macros = "0.25.2"
|
strum_macros = "0.25.2"
|
||||||
tracing.workspace = true
|
tracing.workspace = true
|
||||||
lib-infra = { workspace = true }
|
lib-infra = { workspace = true }
|
||||||
collab = { workspace = true, features = ["async-plugin"] }
|
collab = { workspace = true }
|
||||||
collab-entity.workspace = true
|
collab-entity.workspace = true
|
||||||
collab-user.workspace = true
|
collab-user.workspace = true
|
||||||
collab-integrate = { workspace = true }
|
collab-integrate = { workspace = true }
|
||||||
|
@ -30,7 +30,7 @@ flowy-error = { workspace = true, features = ["impl_from_dispatch_error", "web_t
|
|||||||
flowy-document = { workspace = true, features = ["web_ts"] }
|
flowy-document = { workspace = true, features = ["web_ts"] }
|
||||||
flowy-folder = { workspace = true, features = ["web_ts"] }
|
flowy-folder = { workspace = true, features = ["web_ts"] }
|
||||||
lib-infra = { workspace = true }
|
lib-infra = { workspace = true }
|
||||||
collab = { workspace = true, features = ["async-plugin"] }
|
collab = { workspace = true }
|
||||||
web-sys = "0.3"
|
web-sys = "0.3"
|
||||||
wasm-bindgen-futures.workspace = true
|
wasm-bindgen-futures.workspace = true
|
||||||
uuid.workspace = true
|
uuid.workspace = true
|
||||||
|
134
frontend/appflowy_web_app/src-tauri/Cargo.lock
generated
134
frontend/appflowy_web_app/src-tauri/Cargo.lock
generated
@ -147,7 +147,7 @@ checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247"
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "app-error"
|
name = "app-error"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bincode",
|
"bincode",
|
||||||
@ -687,7 +687,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "client-api"
|
name = "client-api"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"again",
|
"again",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
@ -708,7 +708,6 @@ dependencies = [
|
|||||||
"getrandom 0.2.12",
|
"getrandom 0.2.12",
|
||||||
"gotrue",
|
"gotrue",
|
||||||
"gotrue-entity",
|
"gotrue-entity",
|
||||||
"governor",
|
|
||||||
"mime",
|
"mime",
|
||||||
"parking_lot 0.12.1",
|
"parking_lot 0.12.1",
|
||||||
"prost",
|
"prost",
|
||||||
@ -727,14 +726,13 @@ dependencies = [
|
|||||||
"url",
|
"url",
|
||||||
"uuid",
|
"uuid",
|
||||||
"wasm-bindgen-futures",
|
"wasm-bindgen-futures",
|
||||||
"workspace-template",
|
|
||||||
"yrs",
|
"yrs",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "client-websocket"
|
name = "client-websocket"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-channel",
|
"futures-channel",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
@ -817,7 +815,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab"
|
name = "collab"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
@ -841,7 +839,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-database"
|
name = "collab-database"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
@ -871,7 +869,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-document"
|
name = "collab-document"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"collab",
|
"collab",
|
||||||
@ -890,7 +888,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-entity"
|
name = "collab-entity"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bytes",
|
"bytes",
|
||||||
@ -905,7 +903,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-folder"
|
name = "collab-folder"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"chrono",
|
"chrono",
|
||||||
@ -943,7 +941,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-plugins"
|
name = "collab-plugins"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-stream",
|
"async-stream",
|
||||||
@ -982,7 +980,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-rt-entity"
|
name = "collab-rt-entity"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bincode",
|
"bincode",
|
||||||
@ -1007,7 +1005,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-rt-protocol"
|
name = "collab-rt-protocol"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bincode",
|
"bincode",
|
||||||
@ -1021,7 +1019,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-user"
|
name = "collab-user"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"collab",
|
"collab",
|
||||||
@ -1359,7 +1357,7 @@ checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5"
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "database-entity"
|
name = "database-entity"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"app-error",
|
"app-error",
|
||||||
@ -2412,12 +2410,6 @@ version = "0.3.30"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
|
checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "futures-timer"
|
|
||||||
version = "3.0.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-util"
|
name = "futures-util"
|
||||||
version = "0.3.30"
|
version = "0.3.30"
|
||||||
@ -2757,7 +2749,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "gotrue"
|
name = "gotrue"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
@ -2774,7 +2766,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "gotrue-entity"
|
name = "gotrue-entity"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"app-error",
|
"app-error",
|
||||||
@ -2785,26 +2777,6 @@ dependencies = [
|
|||||||
"serde_json",
|
"serde_json",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "governor"
|
|
||||||
version = "0.6.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "68a7f542ee6b35af73b06abc0dad1c1bae89964e4e253bc4b587b91c9637867b"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"dashmap",
|
|
||||||
"futures",
|
|
||||||
"futures-timer",
|
|
||||||
"no-std-compat",
|
|
||||||
"nonzero_ext",
|
|
||||||
"parking_lot 0.12.1",
|
|
||||||
"portable-atomic",
|
|
||||||
"quanta",
|
|
||||||
"rand 0.8.5",
|
|
||||||
"smallvec",
|
|
||||||
"spinning_top",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gtk"
|
name = "gtk"
|
||||||
version = "0.15.5"
|
version = "0.15.5"
|
||||||
@ -3221,7 +3193,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "infra"
|
name = "infra"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
@ -3847,12 +3819,6 @@ dependencies = [
|
|||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "no-std-compat"
|
|
||||||
version = "0.4.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nodrop"
|
name = "nodrop"
|
||||||
version = "0.1.14"
|
version = "0.1.14"
|
||||||
@ -3869,12 +3835,6 @@ dependencies = [
|
|||||||
"minimal-lexical",
|
"minimal-lexical",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "nonzero_ext"
|
|
||||||
version = "0.3.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ntapi"
|
name = "ntapi"
|
||||||
version = "0.4.1"
|
version = "0.4.1"
|
||||||
@ -4546,12 +4506,6 @@ dependencies = [
|
|||||||
"universal-hash",
|
"universal-hash",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "portable-atomic"
|
|
||||||
version = "1.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "postgrest"
|
name = "postgrest"
|
||||||
version = "1.6.0"
|
version = "1.6.0"
|
||||||
@ -4824,21 +4778,6 @@ dependencies = [
|
|||||||
"psl-types",
|
"psl-types",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "quanta"
|
|
||||||
version = "0.12.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "9ca0b7bac0b97248c40bb77288fc52029cf1459c0461ea1b05ee32ccf011de2c"
|
|
||||||
dependencies = [
|
|
||||||
"crossbeam-utils",
|
|
||||||
"libc",
|
|
||||||
"once_cell",
|
|
||||||
"raw-cpuid",
|
|
||||||
"wasi 0.11.0+wasi-snapshot-preview1",
|
|
||||||
"web-sys",
|
|
||||||
"winapi",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quick-xml"
|
name = "quick-xml"
|
||||||
version = "0.31.0"
|
version = "0.31.0"
|
||||||
@ -4955,15 +4894,6 @@ dependencies = [
|
|||||||
"rand_core 0.5.1",
|
"rand_core 0.5.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "raw-cpuid"
|
|
||||||
version = "11.0.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "9d86a7c4638d42c44551f4791a20e687dbb4c3de1f33c43dd71e355cd429def1"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags 2.5.0",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "raw-window-handle"
|
name = "raw-window-handle"
|
||||||
version = "0.5.2"
|
version = "0.5.2"
|
||||||
@ -5678,7 +5608,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "shared-entity"
|
name = "shared-entity"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"app-error",
|
"app-error",
|
||||||
@ -5835,15 +5765,6 @@ version = "0.9.8"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
|
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "spinning_top"
|
|
||||||
version = "0.3.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d96d2d1d716fb500937168cc09353ffdc7a012be8475ac7308e1bdf0e3923300"
|
|
||||||
dependencies = [
|
|
||||||
"lock_api",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "stable_deref_trait"
|
name = "stable_deref_trait"
|
||||||
version = "1.2.0"
|
version = "1.2.0"
|
||||||
@ -7877,27 +7798,6 @@ dependencies = [
|
|||||||
"wayland-protocols-wlr",
|
"wayland-protocols-wlr",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "workspace-template"
|
|
||||||
version = "0.1.0"
|
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
|
||||||
dependencies = [
|
|
||||||
"anyhow",
|
|
||||||
"async-trait",
|
|
||||||
"bytes",
|
|
||||||
"collab",
|
|
||||||
"collab-document",
|
|
||||||
"collab-entity",
|
|
||||||
"collab-folder",
|
|
||||||
"getrandom 0.2.12",
|
|
||||||
"indexmap 2.2.6",
|
|
||||||
"nanoid",
|
|
||||||
"serde",
|
|
||||||
"serde_json",
|
|
||||||
"tokio",
|
|
||||||
"uuid",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wry"
|
name = "wry"
|
||||||
version = "0.24.7"
|
version = "0.24.7"
|
||||||
|
@ -87,7 +87,7 @@ yrs = { git = "https://github.com/appflowy/y-crdt", rev = "3f25bb510ca5274e7657d
|
|||||||
# Run the script:
|
# Run the script:
|
||||||
# scripts/tool/update_client_api_rev.sh new_rev_id
|
# scripts/tool/update_client_api_rev.sh new_rev_id
|
||||||
# ⚠️⚠️⚠️️
|
# ⚠️⚠️⚠️️
|
||||||
client-api = { git = "https://github.com/AppFlowy-IO/AppFlowy-Cloud", rev = "aa4df32f6d3b53bec5e3715f5abfe4fb9079021b" }
|
client-api = { git = "https://github.com/AppFlowy-IO/AppFlowy-Cloud", rev = "4c002360698c978256ff324ebeed20506e79b3fc" }
|
||||||
# Please use the following script to update collab.
|
# Please use the following script to update collab.
|
||||||
# Working directory: frontend
|
# Working directory: frontend
|
||||||
#
|
#
|
||||||
@ -97,10 +97,10 @@ client-api = { git = "https://github.com/AppFlowy-IO/AppFlowy-Cloud", rev = "aa4
|
|||||||
# To switch to the local path, run:
|
# To switch to the local path, run:
|
||||||
# scripts/tool/update_collab_source.sh
|
# scripts/tool/update_collab_source.sh
|
||||||
# ⚠️⚠️⚠️️
|
# ⚠️⚠️⚠️️
|
||||||
collab = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-folder = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-folder = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-document = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-document = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-database = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-database = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-plugins = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-plugins = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-user = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-user = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-entity = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-entity = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
|
@ -49,11 +49,12 @@ pub fn init_flowy_core() -> AppFlowyCore {
|
|||||||
custom_application_path,
|
custom_application_path,
|
||||||
application_path,
|
application_path,
|
||||||
device_id,
|
device_id,
|
||||||
|
"web".to_string(),
|
||||||
DEFAULT_NAME.to_string(),
|
DEFAULT_NAME.to_string(),
|
||||||
)
|
)
|
||||||
.log_filter("trace", vec!["appflowy_tauri".to_string()]);
|
.log_filter("trace", vec!["appflowy_tauri".to_string()]);
|
||||||
|
|
||||||
let runtime = Arc::new(AFPluginRuntime::new().unwrap());
|
let runtime = Arc::new(AFPluginRuntime::new().unwrap());
|
||||||
let cloned_runtime = runtime.clone();
|
let cloned_runtime = runtime.clone();
|
||||||
runtime.block_on(async move { AppFlowyCore::new(config, cloned_runtime).await })
|
runtime.block_on(async move { AppFlowyCore::new(config, cloned_runtime, None).await })
|
||||||
}
|
}
|
||||||
|
@ -1169,4 +1169,4 @@
|
|||||||
"addField": "إضافة حقل",
|
"addField": "إضافة حقل",
|
||||||
"userIcon": "رمز المستخدم"
|
"userIcon": "رمز المستخدم"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -807,4 +807,4 @@
|
|||||||
"deleteContentTitle": "Esteu segur que voleu suprimir {pageType}?",
|
"deleteContentTitle": "Esteu segur que voleu suprimir {pageType}?",
|
||||||
"deleteContentCaption": "si suprimiu aquest {pageType}, podeu restaurar-lo des de la paperera."
|
"deleteContentCaption": "si suprimiu aquest {pageType}, podeu restaurar-lo des de la paperera."
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -74,12 +74,12 @@
|
|||||||
"copyLink": "کۆپی کردنی لینک"
|
"copyLink": "کۆپی کردنی لینک"
|
||||||
},
|
},
|
||||||
"moreAction": {
|
"moreAction": {
|
||||||
"fontSize": "قەبارەی قەڵەم",
|
|
||||||
"import": "زیادکردن",
|
|
||||||
"moreOptions": "بژاردەی زیاتر",
|
|
||||||
"small": "بچووک",
|
"small": "بچووک",
|
||||||
"medium": "ناوەند",
|
"medium": "ناوەند",
|
||||||
"large": "گەورە"
|
"large": "گەورە",
|
||||||
|
"fontSize": "قەبارەی قەڵەم",
|
||||||
|
"import": "زیادکردن",
|
||||||
|
"moreOptions": "بژاردەی زیاتر"
|
||||||
},
|
},
|
||||||
"importPanel": {
|
"importPanel": {
|
||||||
"textAndMarkdown": "Text & Markdown",
|
"textAndMarkdown": "Text & Markdown",
|
||||||
@ -521,18 +521,6 @@
|
|||||||
"isComplete": "تەواوە",
|
"isComplete": "تەواوە",
|
||||||
"isIncomplted": "ناتەواوە"
|
"isIncomplted": "ناتەواوە"
|
||||||
},
|
},
|
||||||
"singleSelectOptionFilter": {
|
|
||||||
"is": "هەیە",
|
|
||||||
"isNot": "نییە",
|
|
||||||
"isEmpty": "بهتاڵه",
|
|
||||||
"isNotEmpty": "بەتاڵ نییە"
|
|
||||||
},
|
|
||||||
"multiSelectOptionFilter": {
|
|
||||||
"contains": "لەخۆ دەگرێت",
|
|
||||||
"doesNotContain": "لەخۆناگرێت",
|
|
||||||
"isEmpty": "بهتاڵه",
|
|
||||||
"isNotEmpty": "بەتاڵ نییە"
|
|
||||||
},
|
|
||||||
"dateFilter": {
|
"dateFilter": {
|
||||||
"is": "هەیە",
|
"is": "هەیە",
|
||||||
"before": "پێشترە",
|
"before": "پێشترە",
|
||||||
@ -651,6 +639,18 @@
|
|||||||
"median": "ناوەند",
|
"median": "ناوەند",
|
||||||
"min": "کەم",
|
"min": "کەم",
|
||||||
"sum": "کۆ"
|
"sum": "کۆ"
|
||||||
|
},
|
||||||
|
"singleSelectOptionFilter": {
|
||||||
|
"is": "هەیە",
|
||||||
|
"isNot": "نییە",
|
||||||
|
"isEmpty": "بهتاڵه",
|
||||||
|
"isNotEmpty": "بەتاڵ نییە"
|
||||||
|
},
|
||||||
|
"multiSelectOptionFilter": {
|
||||||
|
"contains": "لەخۆ دەگرێت",
|
||||||
|
"doesNotContain": "لەخۆناگرێت",
|
||||||
|
"isEmpty": "بهتاڵه",
|
||||||
|
"isNotEmpty": "بەتاڵ نییە"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"document": {
|
"document": {
|
||||||
@ -892,4 +892,4 @@
|
|||||||
"frequentlyUsed": "زۆرجار بەکارت هێناوە"
|
"frequentlyUsed": "زۆرجار بەکارت هێناوە"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -553,14 +553,14 @@
|
|||||||
"typeAValue": "Einen Wert eingeben...",
|
"typeAValue": "Einen Wert eingeben...",
|
||||||
"layout": "Layout",
|
"layout": "Layout",
|
||||||
"databaseLayout": "Layout",
|
"databaseLayout": "Layout",
|
||||||
"viewList": "Datenbank-Ansichten",
|
|
||||||
"editView": "Ansicht editieren",
|
"editView": "Ansicht editieren",
|
||||||
"boardSettings": "Board-Einstellungen",
|
"boardSettings": "Board-Einstellungen",
|
||||||
"calendarSettings": "Kalender-Einstellungen",
|
"calendarSettings": "Kalender-Einstellungen",
|
||||||
"createView": "New Ansicht",
|
"createView": "New Ansicht",
|
||||||
"duplicateView": "Ansicht duplizieren",
|
"duplicateView": "Ansicht duplizieren",
|
||||||
"deleteView": "Anslicht löschen",
|
"deleteView": "Anslicht löschen",
|
||||||
"numberOfVisibleFields": "{} angezeigt"
|
"numberOfVisibleFields": "{} angezeigt",
|
||||||
|
"viewList": "Datenbank-Ansichten"
|
||||||
},
|
},
|
||||||
"textFilter": {
|
"textFilter": {
|
||||||
"contains": "Enthält",
|
"contains": "Enthält",
|
||||||
@ -1417,4 +1417,4 @@
|
|||||||
"title": "Arbeitsbereichseinstellungen"
|
"title": "Arbeitsbereichseinstellungen"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -213,15 +213,15 @@
|
|||||||
"openSidebar": "Open side bar",
|
"openSidebar": "Open side bar",
|
||||||
"personal": "Personal",
|
"personal": "Personal",
|
||||||
"private": "Private",
|
"private": "Private",
|
||||||
"public": "Public",
|
"workspace": "Workspace",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"clickToHidePrivate": "Click to hide private space\nPages you created here are only visible to you",
|
"clickToHidePrivate": "Click to hide private space\nPages you created here are only visible to you",
|
||||||
"clickToHidePublic": "Click to hide public space\nPages you created here are visible to every member",
|
"clickToHideWorkspace": "Click to hide workspace\nPages you created here are visible to every member",
|
||||||
"clickToHidePersonal": "Click to hide personal space",
|
"clickToHidePersonal": "Click to hide personal space",
|
||||||
"clickToHideFavorites": "Click to hide favorite space",
|
"clickToHideFavorites": "Click to hide favorite space",
|
||||||
"addAPage": "Add a page",
|
"addAPage": "Add a page",
|
||||||
"addAPageToPrivate": "Add a page to private space",
|
"addAPageToPrivate": "Add a page to private space",
|
||||||
"addAPageToPublic": "Add a page to public space",
|
"addAPageToWorkspace": "Add a page to workspace",
|
||||||
"recent": "Recent"
|
"recent": "Recent"
|
||||||
},
|
},
|
||||||
"notifications": {
|
"notifications": {
|
||||||
@ -514,7 +514,17 @@
|
|||||||
"shortcutIsAlreadyUsed": "This shortcut is already used for: {conflict}",
|
"shortcutIsAlreadyUsed": "This shortcut is already used for: {conflict}",
|
||||||
"resetToDefault": "Reset to default keybindings",
|
"resetToDefault": "Reset to default keybindings",
|
||||||
"couldNotLoadErrorMsg": "Could not load shortcuts, Try again",
|
"couldNotLoadErrorMsg": "Could not load shortcuts, Try again",
|
||||||
"couldNotSaveErrorMsg": "Could not save shortcuts, Try again"
|
"couldNotSaveErrorMsg": "Could not save shortcuts, Try again",
|
||||||
|
"commands": {
|
||||||
|
"codeBlockNewParagraph": "Insert a new paragraph next to the code block",
|
||||||
|
"codeBlockAddTwoSpaces": "Insert two spaces at the line start in code block",
|
||||||
|
"codeBlockDeleteTwoSpaces": "Delete two spaces at the line start in code block",
|
||||||
|
"codeBlockSelectAll": "Select all content inside a code block",
|
||||||
|
"codeBlockPasteText": "Paste text in codeblock",
|
||||||
|
"textAlignLeft": "Align text to the left",
|
||||||
|
"textAlignCenter": "Align text to the center",
|
||||||
|
"textAlignRight": "Align text to the right"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"mobile": {
|
"mobile": {
|
||||||
"personalInfo": "Personal Information",
|
"personalInfo": "Personal Information",
|
||||||
@ -835,6 +845,8 @@
|
|||||||
"discardResponse": "Do you want to discard the AI responses?",
|
"discardResponse": "Do you want to discard the AI responses?",
|
||||||
"createInlineMathEquation": "Create equation",
|
"createInlineMathEquation": "Create equation",
|
||||||
"fonts": "Fonts",
|
"fonts": "Fonts",
|
||||||
|
"insertDate": "Insert date",
|
||||||
|
"emoji": "Emoji",
|
||||||
"toggleList": "Toggle list",
|
"toggleList": "Toggle list",
|
||||||
"quoteList": "Quote list",
|
"quoteList": "Quote list",
|
||||||
"numberedList": "Numbered list",
|
"numberedList": "Numbered list",
|
||||||
|
@ -1085,4 +1085,4 @@
|
|||||||
"backgroundColorPink": "fondo rosa",
|
"backgroundColorPink": "fondo rosa",
|
||||||
"backgroundColorRed": "fondo rojo"
|
"backgroundColorRed": "fondo rojo"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -596,4 +596,4 @@
|
|||||||
"deleteContentTitle": "Ziur {pageType} ezabatu nahi duzula?",
|
"deleteContentTitle": "Ziur {pageType} ezabatu nahi duzula?",
|
||||||
"deleteContentCaption": "{pageType} hau ezabatzen baduzu, zaborrontzitik leheneratu dezakezu."
|
"deleteContentCaption": "{pageType} hau ezabatzen baduzu, zaborrontzitik leheneratu dezakezu."
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -669,4 +669,4 @@
|
|||||||
"frequentlyUsed": "استفادهشده"
|
"frequentlyUsed": "استفادهشده"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1262,4 +1262,4 @@
|
|||||||
"userIcon": "Icône utilisateur"
|
"userIcon": "Icône utilisateur"
|
||||||
},
|
},
|
||||||
"noLogFiles": "Il n'y a pas de log"
|
"noLogFiles": "Il n'y a pas de log"
|
||||||
}
|
}
|
@ -9,6 +9,7 @@
|
|||||||
"title": "Titre",
|
"title": "Titre",
|
||||||
"youCanAlso": "Vous pouvez aussi",
|
"youCanAlso": "Vous pouvez aussi",
|
||||||
"and": "et",
|
"and": "et",
|
||||||
|
"failedToOpenUrl": "Échec de l'ouverture de l'URL : {}",
|
||||||
"blockActions": {
|
"blockActions": {
|
||||||
"addBelowTooltip": "Cliquez pour ajouter ci-dessous",
|
"addBelowTooltip": "Cliquez pour ajouter ci-dessous",
|
||||||
"addAboveCmd": "Alt+clic",
|
"addAboveCmd": "Alt+clic",
|
||||||
@ -49,6 +50,7 @@
|
|||||||
"LogInWithGithub": "Se connecter avec Github",
|
"LogInWithGithub": "Se connecter avec Github",
|
||||||
"LogInWithDiscord": "Se connecter avec Discord",
|
"LogInWithDiscord": "Se connecter avec Discord",
|
||||||
"signInWith": "Se connecter avec :",
|
"signInWith": "Se connecter avec :",
|
||||||
|
"signInWithEmail": "Se connecter via e-mail",
|
||||||
"loginAsGuestButtonText": "Commencer"
|
"loginAsGuestButtonText": "Commencer"
|
||||||
},
|
},
|
||||||
"workspace": {
|
"workspace": {
|
||||||
@ -64,7 +66,24 @@
|
|||||||
"reportIssueOnGithub": "Signaler un bug sur Github",
|
"reportIssueOnGithub": "Signaler un bug sur Github",
|
||||||
"exportLogFiles": "Exporter les logs",
|
"exportLogFiles": "Exporter les logs",
|
||||||
"reachOut": "Contactez-nous sur Discord"
|
"reachOut": "Contactez-nous sur Discord"
|
||||||
}
|
},
|
||||||
|
"menuTitle": "Espaces de travail",
|
||||||
|
"deleteWorkspaceHintText": "Êtes-vous sûr de vouloir supprimer l'espace de travail ? Cette action ne peut pas être annulée.",
|
||||||
|
"createSuccess": "Espace de travail créé avec succès",
|
||||||
|
"createFailed": "Échec de la création de l'espace de travail",
|
||||||
|
"createLimitExceeded": "Vous avez atteint la limite maximale d'espace de travail autorisée pour votre compte. Si vous avez besoin d'espaces de travail supplémentaires pour continuer votre travail, veuillez en faire la demande sur Github.",
|
||||||
|
"deleteSuccess": "Espace de travail supprimé avec succès",
|
||||||
|
"deleteFailed": "Échec de la suppression de l'espace de travail",
|
||||||
|
"openSuccess": "Ouverture de l'espace de travail réussie",
|
||||||
|
"openFailed": "Échec de l'ouverture de l'espace de travail",
|
||||||
|
"renameSuccess": "Espace de travail renommé avec succès",
|
||||||
|
"renameFailed": "Échec du renommage de l'espace de travail",
|
||||||
|
"updateIconSuccess": "L'icône de l'espace de travail a été mise à jour avec succès",
|
||||||
|
"updateIconFailed": "La mise a jour de l'icône de l'espace de travail a échoué",
|
||||||
|
"cannotDeleteTheOnlyWorkspace": "Impossible de supprimer le seul espace de travail",
|
||||||
|
"fetchWorkspacesFailed": "Échec de la récupération des espaces de travail",
|
||||||
|
"leaveCurrentWorkspace": "Quitter l'espace de travail",
|
||||||
|
"leaveCurrentWorkspacePrompt": "Êtes-vous sûr de vouloir quitter l'espace de travail actuel ?"
|
||||||
},
|
},
|
||||||
"shareAction": {
|
"shareAction": {
|
||||||
"buttonText": "Partager",
|
"buttonText": "Partager",
|
||||||
@ -133,7 +152,8 @@
|
|||||||
"emptyDescription": "Vous n'avez aucun fichier supprimé",
|
"emptyDescription": "Vous n'avez aucun fichier supprimé",
|
||||||
"isDeleted": "a été supprimé",
|
"isDeleted": "a été supprimé",
|
||||||
"isRestored": "a été restauré"
|
"isRestored": "a été restauré"
|
||||||
}
|
},
|
||||||
|
"confirmDeleteTitle": "Etes-vous sûr de vouloir supprimer définitivement cette page ?"
|
||||||
},
|
},
|
||||||
"deletePagePrompt": {
|
"deletePagePrompt": {
|
||||||
"text": "Cette page se trouve dans la corbeille",
|
"text": "Cette page se trouve dans la corbeille",
|
||||||
@ -193,10 +213,16 @@
|
|||||||
"closeSidebar": "Fermer le menu latéral",
|
"closeSidebar": "Fermer le menu latéral",
|
||||||
"openSidebar": "Ouvrir le menu latéral",
|
"openSidebar": "Ouvrir le menu latéral",
|
||||||
"personal": "Personnel",
|
"personal": "Personnel",
|
||||||
|
"private": "Privé",
|
||||||
|
"public": "Publique",
|
||||||
"favorites": "Favoris",
|
"favorites": "Favoris",
|
||||||
|
"clickToHidePrivate": "Cliquez pour masquer l'espace privé\nLes pages que vous avez créées ici ne sont visibles que par vous",
|
||||||
|
"clickToHidePublic": "Cliquez pour masquer l'espace public\nLes pages que vous avez créées ici sont visibles par tous les membres",
|
||||||
"clickToHidePersonal": "Cliquez pour cacher la section personnelle",
|
"clickToHidePersonal": "Cliquez pour cacher la section personnelle",
|
||||||
"clickToHideFavorites": "Cliquez pour cacher la section favorite",
|
"clickToHideFavorites": "Cliquez pour cacher la section favorite",
|
||||||
"addAPage": "Ajouter une page",
|
"addAPage": "Ajouter une page",
|
||||||
|
"addAPageToPrivate": "Ajouter une page à l'espace privé",
|
||||||
|
"addAPageToPublic": "Ajouter une page à l'espace public",
|
||||||
"recent": "Récent"
|
"recent": "Récent"
|
||||||
},
|
},
|
||||||
"notifications": {
|
"notifications": {
|
||||||
@ -240,9 +266,18 @@
|
|||||||
"helpCenter": "Centre d'aide",
|
"helpCenter": "Centre d'aide",
|
||||||
"add": "Ajouter",
|
"add": "Ajouter",
|
||||||
"yes": "Oui",
|
"yes": "Oui",
|
||||||
|
"clear": "Nettoyer",
|
||||||
"remove": "Retirer",
|
"remove": "Retirer",
|
||||||
"dontRemove": "Ne pas retirer",
|
"dontRemove": "Ne pas retirer",
|
||||||
|
"copyLink": "Copier le lien",
|
||||||
"align": "Aligner",
|
"align": "Aligner",
|
||||||
|
"login": "Se connecter",
|
||||||
|
"logout": "Se déconnecter",
|
||||||
|
"deleteAccount": "Supprimer le compte",
|
||||||
|
"back": "Retour",
|
||||||
|
"signInGoogle": "Se connecter avec Google",
|
||||||
|
"signInGithub": "Se connecter avec Github",
|
||||||
|
"signInDiscord": "Se connecter avec Discord",
|
||||||
"tryAGain": "Réessayer"
|
"tryAGain": "Réessayer"
|
||||||
},
|
},
|
||||||
"label": {
|
"label": {
|
||||||
@ -340,6 +375,7 @@
|
|||||||
"dark": "Mode sombre",
|
"dark": "Mode sombre",
|
||||||
"system": "S'adapter au système"
|
"system": "S'adapter au système"
|
||||||
},
|
},
|
||||||
|
"fontScaleFactor": "Facteur d'échelle de police",
|
||||||
"documentSettings": {
|
"documentSettings": {
|
||||||
"cursorColor": "Couleur du curseur du document",
|
"cursorColor": "Couleur du curseur du document",
|
||||||
"selectionColor": "Couleur de sélection du document",
|
"selectionColor": "Couleur de sélection du document",
|
||||||
@ -394,7 +430,9 @@
|
|||||||
"twentyFourHour": "Vingt-quatre heures"
|
"twentyFourHour": "Vingt-quatre heures"
|
||||||
},
|
},
|
||||||
"showNamingDialogWhenCreatingPage": "Afficher la boîte de dialogue de nommage lors de la création d'une page",
|
"showNamingDialogWhenCreatingPage": "Afficher la boîte de dialogue de nommage lors de la création d'une page",
|
||||||
|
"enableRTLToolbarItems": "Activer les éléments de la barre d'outils RTL",
|
||||||
"members": {
|
"members": {
|
||||||
|
"title": "Paramètres des membres",
|
||||||
"inviteMembers": "Inviter des membres",
|
"inviteMembers": "Inviter des membres",
|
||||||
"sendInvite": "Envoyer une invitation",
|
"sendInvite": "Envoyer une invitation",
|
||||||
"copyInviteLink": "Copier le lien d'invitation",
|
"copyInviteLink": "Copier le lien d'invitation",
|
||||||
@ -408,7 +446,15 @@
|
|||||||
"memberHintText": "Un membre peut lire, commenter, et éditer des pages. Inviter des membres et des invités.",
|
"memberHintText": "Un membre peut lire, commenter, et éditer des pages. Inviter des membres et des invités.",
|
||||||
"guestHintText": "Un invité peut lire, réagir, commenter, et peut éditer certaines pages avec une permission",
|
"guestHintText": "Un invité peut lire, réagir, commenter, et peut éditer certaines pages avec une permission",
|
||||||
"emailInvalidError": "Email invalide, veuillez le vérifier et recommencer",
|
"emailInvalidError": "Email invalide, veuillez le vérifier et recommencer",
|
||||||
"emailSent": "Email envoyé, veuillez vérifier dans votre boîte mail."
|
"emailSent": "Email envoyé, veuillez vérifier dans votre boîte mail.",
|
||||||
|
"members": "membres",
|
||||||
|
"membersCount": {
|
||||||
|
"zero": "{} membres",
|
||||||
|
"one": "{} membre",
|
||||||
|
"other": "{} membres"
|
||||||
|
},
|
||||||
|
"memberLimitExceeded": "Vous avez atteint la limite maximale de membres autorisée pour votre compte. Si vous souhaitez ajouter d'autres membres pour continuer votre travail, veuillez en faire la demande sur Github.",
|
||||||
|
"failedToAddMember": "Échec de l'ajout d'un membre"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"files": {
|
"files": {
|
||||||
@ -1317,4 +1363,4 @@
|
|||||||
"userIcon": "Icône utilisateur"
|
"userIcon": "Icône utilisateur"
|
||||||
},
|
},
|
||||||
"noLogFiles": "Il n'y a pas de log"
|
"noLogFiles": "Il n'y a pas de log"
|
||||||
}
|
}
|
@ -594,4 +594,4 @@
|
|||||||
"deleteContentTitle": "Biztosan törli a következőt: {pageType}?",
|
"deleteContentTitle": "Biztosan törli a következőt: {pageType}?",
|
||||||
"deleteContentCaption": "ha törli ezt a {pageType} oldalt, visszaállíthatja a kukából."
|
"deleteContentCaption": "ha törli ezt a {pageType} oldalt, visszaállíthatja a kukából."
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1017,4 +1017,4 @@
|
|||||||
"noFavorite": "Tidak ada halaman favorit",
|
"noFavorite": "Tidak ada halaman favorit",
|
||||||
"noFavoriteHintText": "Geser halaman ke kiri untuk menambahkannya ke favorit Anda"
|
"noFavoriteHintText": "Geser halaman ke kiri untuk menambahkannya ke favorit Anda"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1262,4 +1262,4 @@
|
|||||||
"userIcon": "Icona utente"
|
"userIcon": "Icona utente"
|
||||||
},
|
},
|
||||||
"noLogFiles": "Non ci sono file di log"
|
"noLogFiles": "Non ci sono file di log"
|
||||||
}
|
}
|
@ -681,4 +681,4 @@
|
|||||||
"deleteContentTitle": "{pageType} を削除してもよろしいですか?",
|
"deleteContentTitle": "{pageType} を削除してもよろしいですか?",
|
||||||
"deleteContentCaption": "この {pageType} を削除しても、ゴミ箱から復元できます。"
|
"deleteContentCaption": "この {pageType} を削除しても、ゴミ箱から復元できます。"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -593,4 +593,4 @@
|
|||||||
"deleteContentTitle": "{pageType}을(를) 삭제하시겠습니까?",
|
"deleteContentTitle": "{pageType}을(를) 삭제하시겠습니까?",
|
||||||
"deleteContentCaption": "이 {pageType}을(를) 삭제하면 휴지통에서 복원할 수 있습니다."
|
"deleteContentCaption": "이 {pageType}을(를) 삭제하면 휴지통에서 복원할 수 있습니다."
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1072,4 +1072,4 @@
|
|||||||
"language": "Język",
|
"language": "Język",
|
||||||
"font": "Czcionka"
|
"font": "Czcionka"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -434,7 +434,17 @@
|
|||||||
"shortcutIsAlreadyUsed": "Este atalho já é usado para: {conflict}",
|
"shortcutIsAlreadyUsed": "Este atalho já é usado para: {conflict}",
|
||||||
"resetToDefault": "Redefinir para atalhos de teclado padrão",
|
"resetToDefault": "Redefinir para atalhos de teclado padrão",
|
||||||
"couldNotLoadErrorMsg": "Não foi possível carregar os atalhos. Tente novamente",
|
"couldNotLoadErrorMsg": "Não foi possível carregar os atalhos. Tente novamente",
|
||||||
"couldNotSaveErrorMsg": "Não foi possível salvar os atalhos. Tente novamente"
|
"couldNotSaveErrorMsg": "Não foi possível salvar os atalhos. Tente novamente",
|
||||||
|
"commands": {
|
||||||
|
"codeBlockNewParagraph": "Bloco de código: insirir um novo parágrafo",
|
||||||
|
"codeBlockAddTwoSpaces": "Bloco de código: insirir dois espaços no início da linha",
|
||||||
|
"codeBlockDeleteTwoSpaces": "Bloco de código: excluir dois espaços no início da linha",
|
||||||
|
"codeBlockSelectAll": "Bloco de código: selecionar tudo",
|
||||||
|
"codeBlockPasteText": "Bloco de códito: Colar texto",
|
||||||
|
"textAlignLeft": "Alinhar texto à esquerda",
|
||||||
|
"textAlignCenter": "Alinhar texto ao centro",
|
||||||
|
"textAlignRight": "Alinhar texto à direita"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"mobile": {
|
"mobile": {
|
||||||
"personalInfo": "Informações pessoais",
|
"personalInfo": "Informações pessoais",
|
||||||
@ -677,9 +687,9 @@
|
|||||||
"codeBlock": "Bloco de código"
|
"codeBlock": "Bloco de código"
|
||||||
},
|
},
|
||||||
"plugins": {
|
"plugins": {
|
||||||
"referencedBoard": "Quadro vinculado",
|
"referencedBoard": "Quadro referenciado",
|
||||||
"referencedGrid": "Grade vinculado",
|
"referencedGrid": "Grade referenciada",
|
||||||
"referencedCalendar": "calendário referenciado",
|
"referencedCalendar": "Calendário referenciado",
|
||||||
"referencedDocument": "Referenciar um documento",
|
"referencedDocument": "Referenciar um documento",
|
||||||
"autoGeneratorMenuItemName": "Gerar nome automaticamente",
|
"autoGeneratorMenuItemName": "Gerar nome automaticamente",
|
||||||
"autoGeneratorTitleName": "Gerar por IA",
|
"autoGeneratorTitleName": "Gerar por IA",
|
||||||
@ -707,6 +717,8 @@
|
|||||||
"bulletedList": "Lista com marcadores",
|
"bulletedList": "Lista com marcadores",
|
||||||
"todoList": "Lista de afazeres",
|
"todoList": "Lista de afazeres",
|
||||||
"callout": "Destacar",
|
"callout": "Destacar",
|
||||||
|
"insertDate": "Inserir data",
|
||||||
|
"emoji": "Emoji",
|
||||||
"cover": {
|
"cover": {
|
||||||
"changeCover": "Mudar capa",
|
"changeCover": "Mudar capa",
|
||||||
"colors": "cores",
|
"colors": "cores",
|
||||||
@ -1207,4 +1219,4 @@
|
|||||||
"addField": "Adicionar campo",
|
"addField": "Adicionar campo",
|
||||||
"userIcon": "Ícone do usuário"
|
"userIcon": "Ícone do usuário"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -852,4 +852,4 @@
|
|||||||
"noResult": "Nenhum resultado",
|
"noResult": "Nenhum resultado",
|
||||||
"caseSensitive": "Maiúsculas e minúsculas"
|
"caseSensitive": "Maiúsculas e minúsculas"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1311,4 +1311,4 @@
|
|||||||
"userIcon": "Пользовательская иконка"
|
"userIcon": "Пользовательская иконка"
|
||||||
},
|
},
|
||||||
"noLogFiles": "Нет файлов журналов"
|
"noLogFiles": "Нет файлов журналов"
|
||||||
}
|
}
|
@ -2,14 +2,14 @@
|
|||||||
"appName": "AppFlowy",
|
"appName": "AppFlowy",
|
||||||
"defaultUsername": "Jag",
|
"defaultUsername": "Jag",
|
||||||
"welcomeText": "Välkommen till @:appName",
|
"welcomeText": "Välkommen till @:appName",
|
||||||
"failedToOpenUrl": "Det gick inte att öppna webbadressen: {}",
|
"welcomeTo": "Välkommen till",
|
||||||
"githubStarText": "Stjärna på GitHub",
|
"githubStarText": "Stjärna på GitHub",
|
||||||
"subscribeNewsletterText": "Prenumerera på nyhetsbrev",
|
"subscribeNewsletterText": "Prenumerera på nyhetsbrev",
|
||||||
"letsGoButtonText": "Snabbstart",
|
"letsGoButtonText": "Snabbstart",
|
||||||
"title": "Titel",
|
"title": "Titel",
|
||||||
"welcomeTo": "Välkommen till",
|
|
||||||
"youCanAlso": "Du kan också",
|
"youCanAlso": "Du kan också",
|
||||||
"and": "och",
|
"and": "och",
|
||||||
|
"failedToOpenUrl": "Det gick inte att öppna webbadressen: {}",
|
||||||
"blockActions": {
|
"blockActions": {
|
||||||
"addBelowTooltip": "Klicka för att lägga till nedan",
|
"addBelowTooltip": "Klicka för att lägga till nedan",
|
||||||
"addAboveCmd": "Alt+klicka",
|
"addAboveCmd": "Alt+klicka",
|
||||||
@ -34,17 +34,17 @@
|
|||||||
"signIn": {
|
"signIn": {
|
||||||
"loginTitle": "Logga in till @:appName",
|
"loginTitle": "Logga in till @:appName",
|
||||||
"loginButtonText": "Logga in",
|
"loginButtonText": "Logga in",
|
||||||
|
"loginStartWithAnonymous": "Börja med en anonym session",
|
||||||
|
"continueAnonymousUser": "Fortsätt med en anonym session",
|
||||||
"buttonText": "Registrera",
|
"buttonText": "Registrera",
|
||||||
|
"signingInText": "Loggar in...",
|
||||||
"forgotPassword": "Glömt ditt lösenord?",
|
"forgotPassword": "Glömt ditt lösenord?",
|
||||||
"emailHint": "Epost",
|
"emailHint": "Epost",
|
||||||
"passwordHint": "Lösenord",
|
"passwordHint": "Lösenord",
|
||||||
"dontHaveAnAccount": "Har du inget konto?",
|
"dontHaveAnAccount": "Har du inget konto?",
|
||||||
"repeatPasswordEmptyError": "Upprepat lösenord kan inte vara tomt",
|
"repeatPasswordEmptyError": "Upprepat lösenord kan inte vara tomt",
|
||||||
"unmatchedPasswordError": "Upprepat lösenord är inte samma som det första",
|
"unmatchedPasswordError": "Upprepat lösenord är inte samma som det första",
|
||||||
"loginAsGuestButtonText": "Komma igång",
|
"loginAsGuestButtonText": "Komma igång"
|
||||||
"continueAnonymousUser": "Fortsätt med en anonym session",
|
|
||||||
"loginStartWithAnonymous": "Börja med en anonym session",
|
|
||||||
"signingInText": "Loggar in..."
|
|
||||||
},
|
},
|
||||||
"workspace": {
|
"workspace": {
|
||||||
"create": "Skapa arbetsyta",
|
"create": "Skapa arbetsyta",
|
||||||
@ -167,7 +167,9 @@
|
|||||||
"editContact": "Redigera kontakt"
|
"editContact": "Redigera kontakt"
|
||||||
},
|
},
|
||||||
"button": {
|
"button": {
|
||||||
|
"ok": "OK",
|
||||||
"done": "Gjort",
|
"done": "Gjort",
|
||||||
|
"cancel": "Avbryt",
|
||||||
"signIn": "Logga in",
|
"signIn": "Logga in",
|
||||||
"signOut": "Logga ut",
|
"signOut": "Logga ut",
|
||||||
"complete": "Slutfört",
|
"complete": "Slutfört",
|
||||||
@ -184,8 +186,6 @@
|
|||||||
"delete": "Radera",
|
"delete": "Radera",
|
||||||
"duplicate": "Duplicera",
|
"duplicate": "Duplicera",
|
||||||
"putback": "Ställ tillbaka",
|
"putback": "Ställ tillbaka",
|
||||||
"ok": "OK",
|
|
||||||
"cancel": "Avbryt",
|
|
||||||
"update": "Uppdatering",
|
"update": "Uppdatering",
|
||||||
"share": "Dela",
|
"share": "Dela",
|
||||||
"removeFromFavorites": "Ta bort från favoriter",
|
"removeFromFavorites": "Ta bort från favoriter",
|
||||||
@ -215,15 +215,15 @@
|
|||||||
},
|
},
|
||||||
"oAuth": {
|
"oAuth": {
|
||||||
"err": {
|
"err": {
|
||||||
"failedMsg": "Se till att du har slutfört inloggningsprocessen i din webbläsare.",
|
"failedTitle": "Det går inte att ansluta till ditt konto.",
|
||||||
"failedTitle": "Det går inte att ansluta till ditt konto."
|
"failedMsg": "Se till att du har slutfört inloggningsprocessen i din webbläsare."
|
||||||
},
|
},
|
||||||
"google": {
|
"google": {
|
||||||
|
"title": "GOOGLE LOGGA IN",
|
||||||
"instruction1": "För att kunna importera dina Google-kontakter måste du auktorisera denna applikation med din webbläsare.",
|
"instruction1": "För att kunna importera dina Google-kontakter måste du auktorisera denna applikation med din webbläsare.",
|
||||||
"instruction2": "Kopiera den här koden till ditt urklipp genom att klicka på ikonen eller välja texten:",
|
"instruction2": "Kopiera den här koden till ditt urklipp genom att klicka på ikonen eller välja texten:",
|
||||||
"instruction3": "Navigera till följande länk i din webbläsare och ange koden ovan:",
|
"instruction3": "Navigera till följande länk i din webbläsare och ange koden ovan:",
|
||||||
"instruction4": "Tryck på knappen nedan när du har slutfört registreringen:",
|
"instruction4": "Tryck på knappen nedan när du har slutfört registreringen:"
|
||||||
"title": "GOOGLE LOGGA IN"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
@ -233,53 +233,53 @@
|
|||||||
"language": "Språk",
|
"language": "Språk",
|
||||||
"user": "Användare",
|
"user": "Användare",
|
||||||
"files": "Filer",
|
"files": "Filer",
|
||||||
|
"notifications": "Aviseringar",
|
||||||
"open": "Öppna Inställningar",
|
"open": "Öppna Inställningar",
|
||||||
"supabaseSetting": "Supabase-inställning",
|
"logout": "Logga ut",
|
||||||
"appFlowyCloudUrlCanNotBeEmpty": "Molnets webbadress får inte vara tom",
|
"logoutPrompt": "Är du säker på att logga ut?",
|
||||||
"changeServerTip": "När du har bytt server måste du klicka på omstartsknappen för att ändringarna ska träda i kraft",
|
"selfEncryptionLogoutPrompt": "Är du säker på att du vill logga ut? Se till att du har kopierat krypteringshemligheten",
|
||||||
"clickToCopy": "Klicka för att kopiera",
|
"syncSetting": "Synkroniseringsinställning",
|
||||||
"clickToCopySecret": "Klicka för att kopiera hemlighet",
|
"cloudSettings": "Molninställningar",
|
||||||
"cloudLocal": "Lokal",
|
"enableSync": "Aktivera synkronisering",
|
||||||
|
"enableEncrypt": "Kryptera data",
|
||||||
|
"cloudURL": "Grund-URL",
|
||||||
|
"invalidCloudURLScheme": "Ogiltigt schema",
|
||||||
"cloudServerType": "Molnserver",
|
"cloudServerType": "Molnserver",
|
||||||
"cloudServerTypeTip": "Observera att det kan logga ut ditt nuvarande konto efter att ha bytt molnserver",
|
"cloudServerTypeTip": "Observera att det kan logga ut ditt nuvarande konto efter att ha bytt molnserver",
|
||||||
"cloudSettings": "Molninställningar",
|
"cloudLocal": "Lokal",
|
||||||
"cloudSupabase": "Supabase",
|
"cloudSupabase": "Supabase",
|
||||||
"cloudSupabaseAnonKey": "Supabase anonym nyckel",
|
|
||||||
"cloudSupabaseAnonKeyCanNotBeEmpty": "Anon-nyckeln kan inte vara tom",
|
|
||||||
"cloudSupabaseUrl": "Supabase URL",
|
"cloudSupabaseUrl": "Supabase URL",
|
||||||
"cloudSupabaseUrlCanNotBeEmpty": "Webbadressen för supabase kan inte vara tom",
|
"cloudSupabaseUrlCanNotBeEmpty": "Webbadressen för supabase kan inte vara tom",
|
||||||
"cloudURL": "Grund-URL",
|
"cloudSupabaseAnonKey": "Supabase anonym nyckel",
|
||||||
|
"cloudSupabaseAnonKeyCanNotBeEmpty": "Anon-nyckeln kan inte vara tom",
|
||||||
|
"appFlowyCloudUrlCanNotBeEmpty": "Molnets webbadress får inte vara tom",
|
||||||
|
"clickToCopy": "Klicka för att kopiera",
|
||||||
|
"selfHostStart": "Om du inte har en server, vänligen se",
|
||||||
|
"selfHostContent": "dokument",
|
||||||
|
"selfHostEnd": "för vägledning om hur du själv är värd för din egen server",
|
||||||
"cloudURLHint": "Ange grundadressen till din server",
|
"cloudURLHint": "Ange grundadressen till din server",
|
||||||
"cloudWSURL": "Websocket URL",
|
"cloudWSURL": "Websocket URL",
|
||||||
"cloudWSURLHint": "Infoga websocket-adressen till din server",
|
"cloudWSURLHint": "Infoga websocket-adressen till din server",
|
||||||
"configServerGuide": "Efter att ha valt `Quick Start`, navigera till `Settings` och sedan \"Cloud Settings\" för att konfigurera din egen värdserver.",
|
|
||||||
"configServerSetting": "Konfigurera dina serverinställningar",
|
|
||||||
"customPathPrompt": "Att lagra AppFlowy-datamappen i en molnsynkroniserad mapp som Google Drive kan innebära risker. Om databasen i den här mappen nås eller ändras från flera platser samtidigt, kan det resultera i synkroniseringskonflikter och potentiell datakorruption",
|
|
||||||
"enableEncrypt": "Kryptera data",
|
|
||||||
"enableEncryptPrompt": "Aktivera kryptering för att säkra dina data med denna hemlighet. Förvara det säkert; när den väl är aktiverad kan den inte stängas av. Om din data går förlorad blir den omöjlig att återställa. Klicka för att kopiera",
|
|
||||||
"enableSync": "Aktivera synkronisering",
|
|
||||||
"historicalUserList": "Användarinloggningshistorik",
|
|
||||||
"historicalUserListTooltip": "Den här listan visar dina anonyma konton. Du kan klicka på ett konto för att se dess detaljer. Anonyma konton skapas genom att klicka på knappen \"Kom igång\".",
|
|
||||||
"importAppFlowyData": "Importera data från extern AppFlowy-mapp",
|
|
||||||
"importAppFlowyDataDescription": "Kopiera data från en extern AppFlowy-datamapp och importera den till den aktuella AppFlowy-datamappen",
|
|
||||||
"importFailed": "Det gick inte att importera AppFlowy-datamappen",
|
|
||||||
"importGuide": "För ytterligare information, snälla se det refererade dokumentet",
|
|
||||||
"importingAppFlowyDataTip": "Dataimport pågår. Stäng inte appen",
|
|
||||||
"importSuccess": "AppFlowy-datamappen har importerats",
|
|
||||||
"inputEncryptPrompt": "Vänligen ange din krypteringshemlighet för",
|
|
||||||
"inputTextFieldHint": "Din hemlighet",
|
|
||||||
"invalidCloudURLScheme": "Ogiltigt schema",
|
|
||||||
"logout": "Logga ut",
|
|
||||||
"logoutPrompt": "Är du säker på att logga ut?",
|
|
||||||
"notifications": "Aviseringar",
|
|
||||||
"openHistoricalUser": "Klicka för att öppna det anonyma kontot",
|
|
||||||
"restartApp": "Omstart",
|
"restartApp": "Omstart",
|
||||||
"restartAppTip": "Starta om programmet för att ändringarna ska träda i kraft. Observera att detta kan logga ut ditt nuvarande konto",
|
"restartAppTip": "Starta om programmet för att ändringarna ska träda i kraft. Observera att detta kan logga ut ditt nuvarande konto",
|
||||||
"selfEncryptionLogoutPrompt": "Är du säker på att du vill logga ut? Se till att du har kopierat krypteringshemligheten",
|
"changeServerTip": "När du har bytt server måste du klicka på omstartsknappen för att ändringarna ska träda i kraft",
|
||||||
"selfHostContent": "dokument",
|
"enableEncryptPrompt": "Aktivera kryptering för att säkra dina data med denna hemlighet. Förvara det säkert; när den väl är aktiverad kan den inte stängas av. Om din data går förlorad blir den omöjlig att återställa. Klicka för att kopiera",
|
||||||
"selfHostEnd": "för vägledning om hur du själv är värd för din egen server",
|
"inputEncryptPrompt": "Vänligen ange din krypteringshemlighet för",
|
||||||
"selfHostStart": "Om du inte har en server, vänligen se",
|
"clickToCopySecret": "Klicka för att kopiera hemlighet",
|
||||||
"syncSetting": "Synkroniseringsinställning"
|
"configServerSetting": "Konfigurera dina serverinställningar",
|
||||||
|
"configServerGuide": "Efter att ha valt `Quick Start`, navigera till `Settings` och sedan \"Cloud Settings\" för att konfigurera din egen värdserver.",
|
||||||
|
"inputTextFieldHint": "Din hemlighet",
|
||||||
|
"historicalUserList": "Användarinloggningshistorik",
|
||||||
|
"historicalUserListTooltip": "Den här listan visar dina anonyma konton. Du kan klicka på ett konto för att se dess detaljer. Anonyma konton skapas genom att klicka på knappen \"Kom igång\".",
|
||||||
|
"openHistoricalUser": "Klicka för att öppna det anonyma kontot",
|
||||||
|
"customPathPrompt": "Att lagra AppFlowy-datamappen i en molnsynkroniserad mapp som Google Drive kan innebära risker. Om databasen i den här mappen nås eller ändras från flera platser samtidigt, kan det resultera i synkroniseringskonflikter och potentiell datakorruption",
|
||||||
|
"importAppFlowyData": "Importera data från extern AppFlowy-mapp",
|
||||||
|
"importingAppFlowyDataTip": "Dataimport pågår. Stäng inte appen",
|
||||||
|
"importAppFlowyDataDescription": "Kopiera data från en extern AppFlowy-datamapp och importera den till den aktuella AppFlowy-datamappen",
|
||||||
|
"importSuccess": "AppFlowy-datamappen har importerats",
|
||||||
|
"importFailed": "Det gick inte att importera AppFlowy-datamappen",
|
||||||
|
"importGuide": "För ytterligare information, snälla se det refererade dokumentet",
|
||||||
|
"supabaseSetting": "Supabase-inställning"
|
||||||
},
|
},
|
||||||
"appearance": {
|
"appearance": {
|
||||||
"fontFamily": {
|
"fontFamily": {
|
||||||
@ -295,12 +295,12 @@
|
|||||||
"themeUpload": {
|
"themeUpload": {
|
||||||
"button": "Ladda upp",
|
"button": "Ladda upp",
|
||||||
"description": "Ladda upp ditt eget AppFlowy-tema med knappen nedan.",
|
"description": "Ladda upp ditt eget AppFlowy-tema med knappen nedan.",
|
||||||
"failure": "Temat som laddades upp hade ett ogiltigt format.",
|
|
||||||
"loading": "Vänta medan vi validerar och laddar upp ditt tema...",
|
"loading": "Vänta medan vi validerar och laddar upp ditt tema...",
|
||||||
"uploadSuccess": "Ditt tema laddades upp",
|
"uploadSuccess": "Ditt tema laddades upp",
|
||||||
"deletionFailure": "Det gick inte att ta bort temat. Försök att radera det manuellt.",
|
"deletionFailure": "Det gick inte att ta bort temat. Försök att radera det manuellt.",
|
||||||
"filePickerDialogTitle": "Välj en .flowy_plugin-fil",
|
"filePickerDialogTitle": "Välj en .flowy_plugin-fil",
|
||||||
"urlUploadFailure": "Det gick inte att öppna webbadressen: {}"
|
"urlUploadFailure": "Det gick inte att öppna webbadressen: {}",
|
||||||
|
"failure": "Temat som laddades upp hade ett ogiltigt format."
|
||||||
},
|
},
|
||||||
"theme": "Tema",
|
"theme": "Tema",
|
||||||
"builtInsLabel": "Inbyggda teman",
|
"builtInsLabel": "Inbyggda teman",
|
||||||
@ -614,11 +614,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"board": {
|
"board": {
|
||||||
"menuName": "Tavla",
|
|
||||||
"referencedBoardPrefix": "Utsikt över",
|
|
||||||
"column": {
|
"column": {
|
||||||
"createNewCard": "Nytt"
|
"createNewCard": "Nytt"
|
||||||
}
|
},
|
||||||
|
"menuName": "Tavla",
|
||||||
|
"referencedBoardPrefix": "Utsikt över"
|
||||||
},
|
},
|
||||||
"calendar": {
|
"calendar": {
|
||||||
"menuName": "Kalender",
|
"menuName": "Kalender",
|
||||||
|
@ -1089,4 +1089,4 @@
|
|||||||
"language": "Dil",
|
"language": "Dil",
|
||||||
"font": "Yazı tipi"
|
"font": "Yazı tipi"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -807,4 +807,4 @@
|
|||||||
"font": "Phông chữ",
|
"font": "Phông chữ",
|
||||||
"date": "Ngày"
|
"date": "Ngày"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1289,4 +1289,4 @@
|
|||||||
"userIcon": "用户图标"
|
"userIcon": "用户图标"
|
||||||
},
|
},
|
||||||
"noLogFiles": "没有日志文件"
|
"noLogFiles": "没有日志文件"
|
||||||
}
|
}
|
@ -1257,4 +1257,4 @@
|
|||||||
"userIcon": "使用者圖示"
|
"userIcon": "使用者圖示"
|
||||||
},
|
},
|
||||||
"noLogFiles": "這裡沒有日誌記錄檔案"
|
"noLogFiles": "這裡沒有日誌記錄檔案"
|
||||||
}
|
}
|
159
frontend/rust-lib/Cargo.lock
generated
159
frontend/rust-lib/Cargo.lock
generated
@ -157,7 +157,7 @@ checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca"
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "app-error"
|
name = "app-error"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bincode",
|
"bincode",
|
||||||
@ -669,7 +669,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "client-api"
|
name = "client-api"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"again",
|
"again",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
@ -690,7 +690,6 @@ dependencies = [
|
|||||||
"getrandom 0.2.10",
|
"getrandom 0.2.10",
|
||||||
"gotrue",
|
"gotrue",
|
||||||
"gotrue-entity",
|
"gotrue-entity",
|
||||||
"governor",
|
|
||||||
"mime",
|
"mime",
|
||||||
"parking_lot 0.12.1",
|
"parking_lot 0.12.1",
|
||||||
"prost",
|
"prost",
|
||||||
@ -709,14 +708,13 @@ dependencies = [
|
|||||||
"url",
|
"url",
|
||||||
"uuid",
|
"uuid",
|
||||||
"wasm-bindgen-futures",
|
"wasm-bindgen-futures",
|
||||||
"workspace-template",
|
|
||||||
"yrs",
|
"yrs",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "client-websocket"
|
name = "client-websocket"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-channel",
|
"futures-channel",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
@ -759,7 +757,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab"
|
name = "collab"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
@ -783,7 +781,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-database"
|
name = "collab-database"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
@ -813,7 +811,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-document"
|
name = "collab-document"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"collab",
|
"collab",
|
||||||
@ -832,7 +830,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-entity"
|
name = "collab-entity"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bytes",
|
"bytes",
|
||||||
@ -847,7 +845,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-folder"
|
name = "collab-folder"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"chrono",
|
"chrono",
|
||||||
@ -885,7 +883,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-plugins"
|
name = "collab-plugins"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-stream",
|
"async-stream",
|
||||||
@ -924,7 +922,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-rt-entity"
|
name = "collab-rt-entity"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bincode",
|
"bincode",
|
||||||
@ -949,7 +947,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-rt-protocol"
|
name = "collab-rt-protocol"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bincode",
|
"bincode",
|
||||||
@ -963,7 +961,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "collab-user"
|
name = "collab-user"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=5f66f8c921646d7d8762cafc8bbec72d56c2e157#5f66f8c921646d7d8762cafc8bbec72d56c2e157"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=352c55199449fbe321965fd42d2ff09ff54cf3f1#352c55199449fbe321965fd42d2ff09ff54cf3f1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"collab",
|
"collab",
|
||||||
@ -1037,9 +1035,9 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cookie"
|
name = "cookie"
|
||||||
version = "0.16.2"
|
version = "0.17.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb"
|
checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
"time",
|
"time",
|
||||||
@ -1048,12 +1046,12 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cookie_store"
|
name = "cookie_store"
|
||||||
version = "0.16.2"
|
version = "0.20.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d606d0fba62e13cf04db20536c05cb7f13673c161cb47a47a82b9b9e7d3f1daa"
|
checksum = "387461abbc748185c3a6e1673d826918b450b87ff22639429c694619a83b6cf6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cookie",
|
"cookie",
|
||||||
"idna 0.2.3",
|
"idna 0.3.0",
|
||||||
"log",
|
"log",
|
||||||
"publicsuffix",
|
"publicsuffix",
|
||||||
"serde",
|
"serde",
|
||||||
@ -1261,6 +1259,7 @@ dependencies = [
|
|||||||
"flowy-user",
|
"flowy-user",
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
"lib-dispatch",
|
"lib-dispatch",
|
||||||
|
"lib-log",
|
||||||
"parking_lot 0.12.1",
|
"parking_lot 0.12.1",
|
||||||
"protobuf",
|
"protobuf",
|
||||||
"serde",
|
"serde",
|
||||||
@ -1293,7 +1292,7 @@ checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308"
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "database-entity"
|
name = "database-entity"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"app-error",
|
"app-error",
|
||||||
@ -2482,7 +2481,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "gotrue"
|
name = "gotrue"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
@ -2499,7 +2498,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "gotrue-entity"
|
name = "gotrue-entity"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"app-error",
|
"app-error",
|
||||||
@ -2510,24 +2509,6 @@ dependencies = [
|
|||||||
"serde_json",
|
"serde_json",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "governor"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "821239e5672ff23e2a7060901fa622950bbd80b649cdaadd78d1c1767ed14eb4"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"dashmap",
|
|
||||||
"futures",
|
|
||||||
"futures-timer",
|
|
||||||
"no-std-compat",
|
|
||||||
"nonzero_ext",
|
|
||||||
"parking_lot 0.12.1",
|
|
||||||
"quanta",
|
|
||||||
"rand 0.8.5",
|
|
||||||
"smallvec",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "h2"
|
name = "h2"
|
||||||
version = "0.3.21"
|
version = "0.3.21"
|
||||||
@ -2784,17 +2765,6 @@ version = "1.0.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "idna"
|
|
||||||
version = "0.2.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"
|
|
||||||
dependencies = [
|
|
||||||
"matches",
|
|
||||||
"unicode-bidi",
|
|
||||||
"unicode-normalization",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
@ -2889,7 +2859,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "infra"
|
name = "infra"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
@ -3037,6 +3007,7 @@ version = "0.1.0"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"chrono",
|
"chrono",
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
|
"lib-infra",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"tracing",
|
"tracing",
|
||||||
@ -3132,15 +3103,6 @@ version = "0.1.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
|
checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "mach2"
|
|
||||||
version = "0.4.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709"
|
|
||||||
dependencies = [
|
|
||||||
"libc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "macroific"
|
name = "macroific"
|
||||||
version = "1.3.1"
|
version = "1.3.1"
|
||||||
@ -3211,12 +3173,6 @@ dependencies = [
|
|||||||
"regex-automata 0.1.10",
|
"regex-automata 0.1.10",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "matches"
|
|
||||||
version = "0.1.10"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "matchit"
|
name = "matchit"
|
||||||
version = "0.7.2"
|
version = "0.7.2"
|
||||||
@ -3355,12 +3311,6 @@ version = "1.0.4"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
|
checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "no-std-compat"
|
|
||||||
version = "0.4.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nom"
|
name = "nom"
|
||||||
version = "7.1.3"
|
version = "7.1.3"
|
||||||
@ -3371,12 +3321,6 @@ dependencies = [
|
|||||||
"minimal-lexical",
|
"minimal-lexical",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "nonzero_ext"
|
|
||||||
version = "0.3.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ntapi"
|
name = "ntapi"
|
||||||
version = "0.4.1"
|
version = "0.4.1"
|
||||||
@ -4148,22 +4092,6 @@ dependencies = [
|
|||||||
"psl-types",
|
"psl-types",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "quanta"
|
|
||||||
version = "0.11.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a17e662a7a8291a865152364c20c7abc5e60486ab2001e8ec10b24862de0b9ab"
|
|
||||||
dependencies = [
|
|
||||||
"crossbeam-utils",
|
|
||||||
"libc",
|
|
||||||
"mach2",
|
|
||||||
"once_cell",
|
|
||||||
"raw-cpuid",
|
|
||||||
"wasi 0.11.0+wasi-snapshot-preview1",
|
|
||||||
"web-sys",
|
|
||||||
"winapi",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quickcheck"
|
name = "quickcheck"
|
||||||
version = "1.0.3"
|
version = "1.0.3"
|
||||||
@ -4321,15 +4249,6 @@ dependencies = [
|
|||||||
"rand_core 0.5.1",
|
"rand_core 0.5.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "raw-cpuid"
|
|
||||||
version = "10.7.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags 1.3.2",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rayon"
|
name = "rayon"
|
||||||
version = "1.9.0"
|
version = "1.9.0"
|
||||||
@ -4456,9 +4375,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "reqwest"
|
name = "reqwest"
|
||||||
version = "0.11.23"
|
version = "0.11.27"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41"
|
checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64 0.21.5",
|
"base64 0.21.5",
|
||||||
"bytes",
|
"bytes",
|
||||||
@ -4488,6 +4407,7 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"serde_urlencoded",
|
"serde_urlencoded",
|
||||||
|
"sync_wrapper",
|
||||||
"system-configuration",
|
"system-configuration",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tokio-native-tls",
|
"tokio-native-tls",
|
||||||
@ -4953,7 +4873,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "shared-entity"
|
name = "shared-entity"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=4c002360698c978256ff324ebeed20506e79b3fc#4c002360698c978256ff324ebeed20506e79b3fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"app-error",
|
"app-error",
|
||||||
@ -6123,9 +6043,9 @@ checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasm-streams"
|
name = "wasm-streams"
|
||||||
version = "0.3.0"
|
version = "0.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7"
|
checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"js-sys",
|
"js-sys",
|
||||||
@ -6388,27 +6308,6 @@ dependencies = [
|
|||||||
"windows-sys",
|
"windows-sys",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "workspace-template"
|
|
||||||
version = "0.1.0"
|
|
||||||
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Cloud?rev=aa4df32f6d3b53bec5e3715f5abfe4fb9079021b#aa4df32f6d3b53bec5e3715f5abfe4fb9079021b"
|
|
||||||
dependencies = [
|
|
||||||
"anyhow",
|
|
||||||
"async-trait",
|
|
||||||
"bytes",
|
|
||||||
"collab",
|
|
||||||
"collab-document",
|
|
||||||
"collab-entity",
|
|
||||||
"collab-folder",
|
|
||||||
"getrandom 0.2.10",
|
|
||||||
"indexmap 2.1.0",
|
|
||||||
"nanoid",
|
|
||||||
"serde",
|
|
||||||
"serde_json",
|
|
||||||
"tokio",
|
|
||||||
"uuid",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wyz"
|
name = "wyz"
|
||||||
version = "0.5.1"
|
version = "0.5.1"
|
||||||
|
@ -111,7 +111,7 @@ rocksdb = { git = "https://github.com/LucasXu0/rust-rocksdb", rev = "21cf4a23ec1
|
|||||||
# Run the script.add_workspace_members:
|
# Run the script.add_workspace_members:
|
||||||
# scripts/tool/update_client_api_rev.sh new_rev_id
|
# scripts/tool/update_client_api_rev.sh new_rev_id
|
||||||
# ⚠️⚠️⚠️️
|
# ⚠️⚠️⚠️️
|
||||||
client-api = { git = "https://github.com/AppFlowy-IO/AppFlowy-Cloud", rev = "aa4df32f6d3b53bec5e3715f5abfe4fb9079021b" }
|
client-api = { git = "https://github.com/AppFlowy-IO/AppFlowy-Cloud", rev = "4c002360698c978256ff324ebeed20506e79b3fc" }
|
||||||
# Please use the following script to update collab.
|
# Please use the following script to update collab.
|
||||||
# Working directory: frontend
|
# Working directory: frontend
|
||||||
#
|
#
|
||||||
@ -121,10 +121,10 @@ client-api = { git = "https://github.com/AppFlowy-IO/AppFlowy-Cloud", rev = "aa4
|
|||||||
# To switch to the local path, run:
|
# To switch to the local path, run:
|
||||||
# scripts/tool/update_collab_source.sh
|
# scripts/tool/update_collab_source.sh
|
||||||
# ⚠️⚠️⚠️️
|
# ⚠️⚠️⚠️️
|
||||||
collab = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-folder = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-folder = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-document = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-document = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-database = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-database = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-plugins = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-plugins = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-user = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-user = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
collab-entity = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "5f66f8c921646d7d8762cafc8bbec72d56c2e157" }
|
collab-entity = { git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "352c55199449fbe321965fd42d2ff09ff54cf3f1" }
|
||||||
|
@ -24,6 +24,7 @@ crossbeam-utils = "0.8.15"
|
|||||||
lazy_static = "1.4.0"
|
lazy_static = "1.4.0"
|
||||||
parking_lot.workspace = true
|
parking_lot.workspace = true
|
||||||
tracing.workspace = true
|
tracing.workspace = true
|
||||||
|
lib-log.workspace = true
|
||||||
|
|
||||||
# workspace
|
# workspace
|
||||||
lib-dispatch = { workspace = true }
|
lib-dispatch = { workspace = true }
|
||||||
|
@ -11,6 +11,8 @@ const uint8_t *sync_event(const uint8_t *input, uintptr_t len);
|
|||||||
|
|
||||||
int32_t set_stream_port(int64_t port);
|
int32_t set_stream_port(int64_t port);
|
||||||
|
|
||||||
|
int32_t set_log_stream_port(int64_t port);
|
||||||
|
|
||||||
void link_me_please(void);
|
void link_me_please(void);
|
||||||
|
|
||||||
void rust_log(int64_t level, const char *data);
|
void rust_log(int64_t level, const char *data);
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user