mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
feat: Integrate supabase (#2551)
* feat: integrate supabase auth service * chore: ignore the sercet * feat: separate and inject the auth service * chore: integrate auth service into sign in/up page * feat: integrate github and google sign in * chore: update user trait * feat: box any params in UserCloudService trait * feat: add flowy-server crate * refactor: user trait * docs: doc ThirdPartyAuthPB * feat: server provider * feat: pass the uuid to rust side * feat: pass supabase config to rust side * feat: integrate env file * feat: implement login as guest * feat: impl postgrest * test: use env * chore: upper case key * feat: optimize the file storage * fix: don't call set auth when user login in local * docs: add docs * feat: create/update/get user using postgrest * feat: optimize the login as guest * feat: create user workspace * feat: create user default workspace * feat: redesign the setting path location page * feat: use uuid as view id * feat: send auth info to rust backend * fix: sign up * fix: skip to wrong page after login * fix: integrate test error * fix: indent command error * feat: add discord login in type * fix: flutter analyze * ci: fix rust tests * ci: fix tauri build * ci: fix tauri build --------- Co-authored-by: nathan <nathan@appflowy.io>
This commit is contained in:
@ -1,3 +1,12 @@
|
||||
use std::convert::TryInto;
|
||||
use std::sync::Arc;
|
||||
|
||||
use bytes::Bytes;
|
||||
use collab_database::fields::Field;
|
||||
|
||||
use flowy_derive::ProtoBuf;
|
||||
use flowy_error::ErrorCode;
|
||||
|
||||
use crate::entities::parser::NotEmptyStr;
|
||||
use crate::entities::{
|
||||
CheckboxFilterPB, ChecklistFilterPB, DateFilterContentPB, DateFilterPB, FieldType,
|
||||
@ -5,12 +14,6 @@ use crate::entities::{
|
||||
};
|
||||
use crate::services::field::SelectOptionIds;
|
||||
use crate::services::filter::{Filter, FilterType};
|
||||
use bytes::Bytes;
|
||||
use collab_database::fields::Field;
|
||||
use flowy_derive::ProtoBuf;
|
||||
use flowy_error::ErrorCode;
|
||||
use std::convert::TryInto;
|
||||
use std::sync::Arc;
|
||||
|
||||
#[derive(Eq, PartialEq, ProtoBuf, Debug, Default, Clone)]
|
||||
pub struct FilterPB {
|
||||
@ -95,7 +98,7 @@ impl TryInto<DeleteFilterParams> for DeleteFilterPayloadPB {
|
||||
.0;
|
||||
|
||||
let filter_id = NotEmptyStr::parse(self.filter_id)
|
||||
.map_err(|_| ErrorCode::UnexpectedEmptyString)?
|
||||
.map_err(|_| ErrorCode::UnexpectedEmpty)?
|
||||
.0;
|
||||
|
||||
let filter_type = FilterType {
|
||||
|
@ -178,7 +178,7 @@ impl TryInto<DeleteSortParams> for DeleteSortPayloadPB {
|
||||
.0;
|
||||
|
||||
let sort_id = NotEmptyStr::parse(self.sort_id)
|
||||
.map_err(|_| ErrorCode::UnexpectedEmptyString)?
|
||||
.map_err(|_| ErrorCode::UnexpectedEmpty)?
|
||||
.0;
|
||||
|
||||
let sort_type = SortType {
|
||||
|
@ -19,7 +19,7 @@ use crate::services::database::{DatabaseEditor, MutexDatabase};
|
||||
|
||||
pub trait DatabaseUser2: Send + Sync {
|
||||
fn user_id(&self) -> Result<i64, FlowyError>;
|
||||
fn token(&self) -> Result<String, FlowyError>;
|
||||
fn token(&self) -> Result<Option<String>, FlowyError>;
|
||||
fn collab_db(&self) -> Result<Arc<RocksCollabDB>, FlowyError>;
|
||||
}
|
||||
|
||||
@ -46,7 +46,7 @@ impl DatabaseManager2 {
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn initialize(&self, user_id: i64, _token: &str) -> FlowyResult<()> {
|
||||
pub async fn initialize(&self, user_id: i64) -> FlowyResult<()> {
|
||||
let db = self.user.collab_db()?;
|
||||
*self.user_database.lock() = Some(InnerUserDatabase::new(
|
||||
user_id,
|
||||
@ -58,8 +58,8 @@ impl DatabaseManager2 {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn initialize_with_new_user(&self, user_id: i64, token: &str) -> FlowyResult<()> {
|
||||
self.initialize(user_id, token).await?;
|
||||
pub async fn initialize_with_new_user(&self, user_id: i64, _token: &str) -> FlowyResult<()> {
|
||||
self.initialize(user_id).await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,3 @@
|
||||
use std::any::Any;
|
||||
use std::cmp::Ordering;
|
||||
use std::collections::hash_map::DefaultHasher;
|
||||
use std::hash::{Hash, Hasher};
|
||||
@ -7,6 +6,7 @@ use collab_database::fields::{Field, TypeOptionData};
|
||||
use collab_database::rows::{Cell, RowId};
|
||||
|
||||
use flowy_error::FlowyResult;
|
||||
use lib_infra::box_any::BoxAny;
|
||||
|
||||
use crate::entities::FieldType;
|
||||
use crate::services::cell::{
|
||||
@ -486,41 +486,7 @@ fn get_type_option_transform_handler(
|
||||
}
|
||||
}
|
||||
|
||||
pub struct BoxCellData(Box<dyn Any + Send + Sync + 'static>);
|
||||
|
||||
impl BoxCellData {
|
||||
fn new<T>(value: T) -> Self
|
||||
where
|
||||
T: Send + Sync + 'static,
|
||||
{
|
||||
Self(Box::new(value))
|
||||
}
|
||||
|
||||
fn unbox_or_default<T>(self) -> T
|
||||
where
|
||||
T: Default + 'static,
|
||||
{
|
||||
match self.0.downcast::<T>() {
|
||||
Ok(value) => *value,
|
||||
Err(_) => T::default(),
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn unbox_or_none<T>(self) -> Option<T>
|
||||
where
|
||||
T: Default + 'static,
|
||||
{
|
||||
match self.0.downcast::<T>() {
|
||||
Ok(value) => Some(*value),
|
||||
Err(_) => None,
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
fn downcast_ref<T: 'static>(&self) -> Option<&T> {
|
||||
self.0.downcast_ref()
|
||||
}
|
||||
}
|
||||
pub type BoxCellData = BoxAny;
|
||||
|
||||
pub struct RowSingleCellData {
|
||||
pub row_id: RowId,
|
||||
|
Reference in New Issue
Block a user