Browse Source

chore: setup auto login

nathan 2 years ago
parent
commit
a2bdb08a84

+ 1 - 290
frontend/appflowy_tauri/src-tauri/Cargo.lock

@@ -173,52 +173,6 @@ version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
 
-[[package]]
-name = "axum"
-version = "0.6.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2fb79c228270dcf2426e74864cabc94babb5dbab01a4314e702d2f16540e1591"
-dependencies = [
- "async-trait",
- "axum-core",
- "bitflags",
- "bytes",
- "futures-util",
- "http",
- "http-body",
- "hyper",
- "itoa 1.0.5",
- "matchit",
- "memchr",
- "mime",
- "percent-encoding",
- "pin-project-lite",
- "rustversion",
- "serde",
- "sync_wrapper",
- "tower",
- "tower-http",
- "tower-layer",
- "tower-service",
-]
-
-[[package]]
-name = "axum-core"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1cae3e661676ffbacb30f1a824089a8c9150e71017f7e1e38f2aa32009188d34"
-dependencies = [
- "async-trait",
- "bytes",
- "futures-util",
- "http",
- "http-body",
- "mime",
- "rustversion",
- "tower-layer",
- "tower-service",
-]
-
 [[package]]
 name = "backtrace"
 version = "0.3.67"
@@ -630,7 +584,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "19b076e143e1d9538dde65da30f8481c2a6c44040edb8e02b9bf1351edb92ce3"
 dependencies = [
  "lazy_static",
- "nom 5.1.2",
+ "nom",
  "serde",
  "yaml-rust",
 ]
@@ -650,42 +604,6 @@ dependencies = [
  "winapi",
 ]
 
-[[package]]
-name = "console-api"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e57ff02e8ad8e06ab9731d5dc72dc23bef9200778eae1a89d555d8c42e5d4a86"
-dependencies = [
- "prost",
- "prost-types",
- "tonic",
- "tracing-core",
-]
-
-[[package]]
-name = "console-subscriber"
-version = "0.1.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22a3a81dfaf6b66bce5d159eddae701e3a002f194d378cbf7be5f053c281d9be"
-dependencies = [
- "console-api",
- "crossbeam-channel",
- "crossbeam-utils",
- "futures",
- "hdrhistogram",
- "humantime",
- "prost-types",
- "serde",
- "serde_json",
- "thread_local",
- "tokio",
- "tokio-stream",
- "tonic",
- "tracing",
- "tracing-core",
- "tracing-subscriber 0.3.16",
-]
-
 [[package]]
 name = "convert_case"
 version = "0.4.0"
@@ -1297,7 +1215,6 @@ name = "flowy-core"
 version = "0.1.0"
 dependencies = [
  "bytes",
- "console-subscriber",
  "database-model",
  "flowy-client-ws",
  "flowy-database",
@@ -2148,19 +2065,6 @@ dependencies = [
  "ahash",
 ]
 
-[[package]]
-name = "hdrhistogram"
-version = "7.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f19b9f54f7c7f55e31401bb647626ce0cf0f67b0004982ce815b3ee72a02aa8"
-dependencies = [
- "base64 0.13.1",
- "byteorder",
- "flate2",
- "nom 7.1.3",
- "num-traits",
-]
-
 [[package]]
 name = "heck"
 version = "0.3.3"
@@ -2237,12 +2141,6 @@ version = "0.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573"
 
-[[package]]
-name = "http-range-header"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29"
-
 [[package]]
 name = "httparse"
 version = "1.8.0"
@@ -2261,12 +2159,6 @@ version = "1.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "02296996cb8796d7c6e3bc2d9211b7802812d36999a51bb754123ead7d37d026"
 
-[[package]]
-name = "humantime"
-version = "2.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
-
 [[package]]
 name = "hyper"
 version = "0.14.23"
@@ -2291,18 +2183,6 @@ dependencies = [
  "want",
 ]
 
-[[package]]
-name = "hyper-timeout"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1"
-dependencies = [
- "hyper",
- "pin-project-lite",
- "tokio",
- "tokio-io-timeout",
-]
-
 [[package]]
 name = "hyper-tls"
 version = "0.5.0"
@@ -2788,12 +2668,6 @@ version = "0.1.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"
 
-[[package]]
-name = "matchit"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40"
-
 [[package]]
 name = "md5"
 version = "0.7.0"
@@ -2851,12 +2725,6 @@ version = "0.3.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
 
-[[package]]
-name = "minimal-lexical"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
-
 [[package]]
 name = "miniz_oxide"
 version = "0.6.2"
@@ -2956,16 +2824,6 @@ dependencies = [
  "version_check",
 ]
 
-[[package]]
-name = "nom"
-version = "7.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
-dependencies = [
- "memchr",
- "minimal-lexical",
-]
-
 [[package]]
 name = "nu-ansi-term"
 version = "0.46.0"
@@ -3548,38 +3406,6 @@ dependencies = [
  "unicode-ident",
 ]
 
-[[package]]
-name = "prost"
-version = "0.11.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e48e50df39172a3e7eb17e14642445da64996989bc212b583015435d39a58537"
-dependencies = [
- "bytes",
- "prost-derive",
-]
-
-[[package]]
-name = "prost-derive"
-version = "0.11.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ea9b0f8cbe5e15a8a042d030bd96668db28ecb567ec37d691971ff5731d2b1b"
-dependencies = [
- "anyhow",
- "itertools",
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "prost-types"
-version = "0.11.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "379119666929a1afd7a043aa6cf96fa67a6dce9af60c88095a4686dbce4c9c88"
-dependencies = [
- "prost",
-]
-
 [[package]]
 name = "protobuf"
 version = "2.28.0"
@@ -4479,12 +4305,6 @@ dependencies = [
  "unicode-ident",
 ]
 
-[[package]]
-name = "sync_wrapper"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
-
 [[package]]
 name = "system-deps"
 version = "5.0.0"
@@ -4921,20 +4741,9 @@ dependencies = [
  "signal-hook-registry",
  "socket2",
  "tokio-macros",
- "tracing",
  "windows-sys 0.45.0",
 ]
 
-[[package]]
-name = "tokio-io-timeout"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf"
-dependencies = [
- "pin-project-lite",
- "tokio",
-]
-
 [[package]]
 name = "tokio-macros"
 version = "1.8.2"
@@ -4956,17 +4765,6 @@ dependencies = [
  "tokio",
 ]
 
-[[package]]
-name = "tokio-stream"
-version = "0.1.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8fb52b74f05dbf495a8fba459fdc331812b96aa086d9eb78101fa0d4569c3313"
-dependencies = [
- "futures-core",
- "pin-project-lite",
- "tokio",
-]
-
 [[package]]
 name = "tokio-tungstenite"
 version = "0.15.0"
@@ -5003,83 +4801,6 @@ dependencies = [
  "serde",
 ]
 
-[[package]]
-name = "tonic"
-version = "0.8.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f219fad3b929bef19b1f86fbc0358d35daed8f2cac972037ac0dc10bbb8d5fb"
-dependencies = [
- "async-stream",
- "async-trait",
- "axum",
- "base64 0.13.1",
- "bytes",
- "futures-core",
- "futures-util",
- "h2",
- "http",
- "http-body",
- "hyper",
- "hyper-timeout",
- "percent-encoding",
- "pin-project",
- "prost",
- "prost-derive",
- "tokio",
- "tokio-stream",
- "tokio-util",
- "tower",
- "tower-layer",
- "tower-service",
- "tracing",
- "tracing-futures",
-]
-
-[[package]]
-name = "tower"
-version = "0.4.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
-dependencies = [
- "futures-core",
- "futures-util",
- "indexmap",
- "pin-project",
- "pin-project-lite",
- "rand 0.8.5",
- "slab",
- "tokio",
- "tokio-util",
- "tower-layer",
- "tower-service",
- "tracing",
-]
-
-[[package]]
-name = "tower-http"
-version = "0.3.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f873044bf02dd1e8239e9c1293ea39dad76dc594ec16185d0a1bf31d8dc8d858"
-dependencies = [
- "bitflags",
- "bytes",
- "futures-core",
- "futures-util",
- "http",
- "http-body",
- "http-range-header",
- "pin-project-lite",
- "tower",
- "tower-layer",
- "tower-service",
-]
-
-[[package]]
-name = "tower-layer"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0"
-
 [[package]]
 name = "tower-service"
 version = "0.3.2"
@@ -5148,16 +4869,6 @@ dependencies = [
  "valuable",
 ]
 
-[[package]]
-name = "tracing-futures"
-version = "0.2.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2"
-dependencies = [
- "pin-project",
- "tracing",
-]
-
 [[package]]
 name = "tracing-log"
 version = "0.1.3"

+ 2 - 0
frontend/appflowy_tauri/src/appflowy_app/App.tsx

@@ -14,6 +14,7 @@ import { ConfirmAccountPage } from './views/ConfirmAccountPage';
 import { ErrorHandlerPage } from './components/error/ErrorHandlerPage';
 import initializeI18n from './stores/i18n/initializeI18n';
 import { TestAPI } from './components/TestApiButton/TestAPI';
+import { GetStarted } from './components/auth/GetStarted/GetStarted';
 
 initializeI18n();
 
@@ -31,6 +32,7 @@ const App = () => {
             <Route path={'/'} element={<Welcome />} />
           </Route>
           <Route path={'/auth/login'} element={<LoginPage />}></Route>
+          <Route path={'/auth/getStarted'} element={<GetStarted />}></Route>
           <Route path={'/auth/signUp'} element={<SignUpPage />}></Route>
           <Route path={'/auth/confirm-account'} element={<ConfirmAccountPage />}></Route>
         </Routes>

+ 31 - 0
frontend/appflowy_tauri/src/appflowy_app/components/auth/GetStarted/GetStarted.tsx

@@ -0,0 +1,31 @@
+import { t } from 'i18next';
+import { AppflowyLogo } from '../../_shared/svg/AppflowyLogo';
+import { Button } from '../../_shared/Button';
+import { useLogin } from '../Login/Login.hooks';
+
+export const GetStarted = () => {
+  const { onAutoSignInClick } = useLogin();
+  return (
+    <>
+      <form onSubmit={(e) => e.preventDefault()} method='POST'>
+        <div className='relative flex h-screen w-screen flex-col items-center justify-center gap-12 text-center'>
+          <div className='flex h-10 w-10 justify-center'>
+            <AppflowyLogo />
+          </div>
+
+          <div>
+            <span className='text-2xl font-semibold leading-9'>
+              {t('signIn.loginTitle').replace('@:appName', 'AppFlowy')}
+            </span>
+          </div>
+
+          <div className='flex w-full max-w-[340px] flex-col gap-6 '>
+            <Button size={'primary'} onClick={() => onAutoSignInClick()}>
+              {t('signUp.getStartedText')}
+            </Button>
+          </div>
+        </div>
+      </form>
+    </>
+  );
+};

+ 26 - 3
frontend/appflowy_tauri/src/appflowy_app/components/auth/Login/Login.hooks.ts

@@ -3,6 +3,7 @@ import { currentUserActions } from '../../../stores/reducers/current-user/slice'
 import { useAppDispatch, useAppSelector } from '../../../stores/store';
 import { useNavigate } from 'react-router-dom';
 import { useAuth } from '../auth.hooks';
+import { nanoid } from 'nanoid';
 
 export const useLogin = () => {
   const [email, setEmail] = useState('');
@@ -11,7 +12,7 @@ export const useLogin = () => {
   const appDispatch = useAppDispatch();
   const currentUser = useAppSelector((state) => state.currentUser);
   const navigate = useNavigate();
-  const { login } = useAuth();
+  const { login, register } = useAuth();
   const [authError, setAuthError] = useState(false);
 
   function onTogglePassword() {
@@ -29,10 +30,31 @@ export const useLogin = () => {
     setPassword(v);
   }
 
+  async function onAutoSignInClick() {
+    try {
+      const fakeEmail = nanoid(8) + '@appflowy.io';
+      const fakePassword = 'AppFlowy123@';
+      const userProfile = await register(fakeEmail, fakePassword, 'Me');
+      const { id, name, token } = userProfile;
+      appDispatch(
+        currentUserActions.updateUser({
+          id: id,
+          displayName: name,
+          email: email,
+          token: token,
+          isAuthenticated: true,
+        })
+      );
+      navigate('/');
+    } catch (e) {
+      setAuthError(true);
+    }
+  }
+
   async function onSignInClick() {
     try {
-      const result = await login(email, password);
-      const { id, name, token } = result;
+      const userProfile = await login(email, password);
+      const { id, name, token } = userProfile;
       appDispatch(
         currentUserActions.updateUser({
           id: id,
@@ -52,6 +74,7 @@ export const useLogin = () => {
     showPassword,
     onTogglePassword,
     onSignInClick,
+    onAutoSignInClick,
     email,
     setEmail: _setEmail,
     password,

+ 2 - 2
frontend/appflowy_tauri/src/appflowy_app/components/auth/ProtectedRoutes.tsx

@@ -1,6 +1,6 @@
 import { Navigate, Outlet, useLocation } from 'react-router-dom';
 import { useAuth } from './auth.hooks';
-import { Screen } from '../../components/layout/Screen';
+import { Screen } from '../layout/Screen';
 
 export const ProtectedRoutes = () => {
   const location = useLocation();
@@ -11,6 +11,6 @@ export const ProtectedRoutes = () => {
       <Outlet />
     </Screen>
   ) : (
-    <Navigate to='/auth/login' replace state={{ from: location }} />
+    <Navigate to='/auth/getStarted' replace state={{ from: location }} />
   );
 };

+ 1 - 1
frontend/appflowy_tauri/src/appflowy_app/stores/effects/database/database_controller.ts

@@ -1,7 +1,7 @@
 import { DatabaseBackendService } from './database_bd_svc';
 import { FieldController, FieldInfo } from './field/field_controller';
 import { DatabaseViewCache } from './view/database_view_cache';
-import { DatabasePB } from '../../../../services/backend/models/flowy-database/grid_entities';
+import { DatabasePB } from '../../../../services/backend';
 import { RowChangedReason, RowInfo } from './row/row_cache';
 import { Err, Ok } from 'ts-results';
 

+ 2 - 2
frontend/appflowy_tauri/src/appflowy_app/stores/reducers/current-user/slice.ts

@@ -8,7 +8,7 @@ export interface ICurrentUser {
   email?: string;
   token?: string;
   isAuthenticated: boolean;
-  workspaceSetting?: WorkspaceSettingPB,
+  workspaceSetting?: WorkspaceSettingPB;
 }
 
 const initialState: ICurrentUser | null = {
@@ -16,7 +16,7 @@ const initialState: ICurrentUser | null = {
   displayName: 'Me 😃',
   email: `${nanoid(4)}@gmail.com`,
   token: nanoid(8),
-  isAuthenticated: true,
+  isAuthenticated: false,
 };
 
 export const currentUserSlice = createSlice({

+ 0 - 3
frontend/rust-lib/flowy-folder/src/services/workspace/controller.rs

@@ -179,7 +179,6 @@ impl WorkspaceController {
 }
 
 impl WorkspaceController {
-  #[tracing::instrument(level = "trace", skip(self), err)]
   async fn create_workspace_on_server(
     &self,
     params: CreateWorkspaceParams,
@@ -188,7 +187,6 @@ impl WorkspaceController {
     self.cloud_service.create_workspace(&token, params).await
   }
 
-  #[tracing::instrument(level = "trace", skip(self), err)]
   fn update_workspace_on_server(&self, params: UpdateWorkspaceParams) -> Result<(), FlowyError> {
     let (token, server) = (self.user.token()?, self.cloud_service.clone());
     tokio::spawn(async move {
@@ -203,7 +201,6 @@ impl WorkspaceController {
     Ok(())
   }
 
-  #[tracing::instrument(level = "trace", skip(self), err)]
   fn delete_workspace_on_server(&self, workspace_id: &str) -> Result<(), FlowyError> {
     let params = WorkspaceIdPB {
       value: Some(workspace_id.to_string()),

+ 0 - 1
frontend/rust-lib/flowy-task/src/scheduler.rs

@@ -59,7 +59,6 @@ impl TaskDispatcher {
     self.store.clear();
   }
 
-  #[tracing::instrument(level = "trace", skip_all)]
   pub(crate) async fn process_next_task(&mut self) -> Option<()> {
     let pending_task = self.queue.mut_head(|list| list.pop())?;
     let mut task = self.store.remove_task(&pending_task.id)?;