feat: Customize the storage folder path (#1538)

* feat: support customize folder path

* feat: add l10n and optimize the logic

* chore: code refactor

* feat: add file read/write permission for macOS

* fix: add toast for restoring path

* feat: fetch apps and show them

* feat: fetch apps and show them

* feat: implement select document logic

* feat: l10n and add select item callback

* feat: add space between tile

* chore: move file exporter to settings

* chore: update UI

* feat: support customizing folder when launching the app

* feat: auto register after customizing folder

* feat: l10n

* feat: l10n

* chore: reinitialize flowy sdk when calling init_sdk

* chore: remove flowysdk const keyword to make sure it can be rebuild

* chore: clear kv values when user logout

* chore: replace current workspace id key in kv.db

* feat: add config.name as a part of seesion_cache_key

* feat: support open folder when launching

* chore: fix some bugs

* chore: dart fix & flutter analyze

* chore: wrap 'sign up with ramdom user' as interface

* feat: dismiss settings view after changing the folder

* fix: read kv value after initializaing with new path

* chore: remove user_id prefix from current workspace key

* fix: move open latest view action to bloc

* test: add test utils for integration tests

* chore: move integration_test to its parent directory

* test: add integration_test ci

* test: switch to B from A, then switch to A again

* chore: fix warings and format code and fix tests

* chore: remove comment out codes

* chore: rename some properties name and optimize the logic

* chore: abstract logic of settings file exporter widget to cubit

* chore: abstract location customizer view from file system view

* chore: abstract settings page index to enum type

* chore: remove the redundant underscore

* test: fix integration test error

* chore: enable integration test for windows and ubuntu

* feat: abstract file picker as service and mock it under integration test

* chore: fix bloc test

Co-authored-by: nathan <nathan@appflowy.io>
This commit is contained in:
Lucas.Xu
2022-12-20 11:14:42 +08:00
committed by GitHub
parent 079fab6118
commit 5d7008edd7
59 changed files with 1837 additions and 302 deletions

View File

@ -10,12 +10,15 @@ use crate::{
};
use flowy_sdk::get_client_server_configuration;
use flowy_sdk::*;
use lazy_static::lazy_static;
use lib_dispatch::prelude::ToBytes;
use lib_dispatch::prelude::*;
use once_cell::sync::OnceCell;
use parking_lot::RwLock;
use std::{ffi::CStr, os::raw::c_char};
static FLOWY_SDK: OnceCell<FlowySDK> = OnceCell::new();
lazy_static! {
static ref FLOWY_SDK: RwLock<Option<FlowySDK>> = RwLock::new(None);
}
#[no_mangle]
pub extern "C" fn init_sdk(path: *mut c_char) -> i64 {
@ -23,8 +26,8 @@ pub extern "C" fn init_sdk(path: *mut c_char) -> i64 {
let path: &str = c_str.to_str().unwrap();
let server_config = get_client_server_configuration().unwrap();
let config = FlowySDKConfig::new(path, "appflowy", server_config).log_filter("info");
FLOWY_SDK.get_or_init(|| FlowySDK::new(config));
let config = FlowySDKConfig::new(path, "appflowy".to_string(), server_config).log_filter("info");
*FLOWY_SDK.write() = Some(FlowySDK::new(config));
0
}
@ -39,7 +42,7 @@ pub extern "C" fn async_event(port: i64, input: *const u8, len: usize) {
port
);
let dispatcher = match FLOWY_SDK.get() {
let dispatcher = match FLOWY_SDK.read().as_ref() {
None => {
log::error!("sdk not init yet.");
return;
@ -57,7 +60,7 @@ pub extern "C" fn sync_event(input: *const u8, len: usize) -> *const u8 {
let request: AFPluginRequest = FFIRequest::from_u8_pointer(input, len).into();
log::trace!("[FFI]: {} Sync Event: {:?}", &request.id, &request.event,);
let dispatcher = match FLOWY_SDK.get() {
let dispatcher = match FLOWY_SDK.read().as_ref() {
None => {
log::error!("sdk not init yet.");
return forget_rust(Vec::default());