Browse Source

feat: migrate ViewType::Doc to ViewType::QuillDocument

appflowy 3 years ago
parent
commit
d18e06a9ef

+ 2 - 1
frontend/app_flowy/lib/workspace/domain/page_stack/page_stack.dart

@@ -19,7 +19,8 @@ abstract class NavigationItem {
 
 enum HomeStackType {
   blank,
-  doc,
+  document,
+  kanban,
   trash,
 }
 

+ 8 - 8
frontend/app_flowy/lib/workspace/domain/view_ext.dart

@@ -6,10 +6,10 @@ import 'package:flowy_sdk/protobuf/flowy-folder-data-model/view.pb.dart';
 extension ToHomeStackContext on View {
   HomeStackContext stackContext() {
     switch (viewType) {
-      case ViewType.Blank:
-        return BlankStackContext();
-      case ViewType.Doc:
-        return DocStackContext(view: this);
+      case ViewType.QuillDocument:
+        return DocumentStackContext(view: this);
+      case ViewType.Kanban:
+        return DocumentStackContext(view: this);
       default:
         return BlankStackContext();
     }
@@ -19,10 +19,10 @@ extension ToHomeStackContext on View {
 extension ToHomeStackType on View {
   HomeStackType stackType() {
     switch (viewType) {
-      case ViewType.Blank:
-        return HomeStackType.blank;
-      case ViewType.Doc:
-        return HomeStackType.doc;
+      case ViewType.QuillDocument:
+        return HomeStackType.document;
+      case ViewType.Kanban:
+        return HomeStackType.kanban;
       default:
         return HomeStackType.blank;
     }

+ 2 - 2
frontend/app_flowy/lib/workspace/presentation/stack_page/doc/doc_stack_page.dart

@@ -24,12 +24,12 @@ import 'package:provider/provider.dart';
 
 import 'document_page.dart';
 
-class DocStackContext extends HomeStackContext<int, ShareActionWrapper> {
+class DocumentStackContext extends HomeStackContext<int, ShareActionWrapper> {
   View _view;
   late ViewListener _listener;
   final ValueNotifier<int> _isUpdated = ValueNotifier<int>(0);
 
-  DocStackContext({required View view, Key? key}) : _view = view {
+  DocumentStackContext({required View view, Key? key}) : _view = view {
     _listener = getIt<ViewListener>(param1: view);
     _listener.updatedNotifier.addPublishListener((result) {
       result.fold(

+ 46 - 2
shared-lib/flowy-folder-data-model/src/entities/view.rs

@@ -8,6 +8,8 @@ use crate::{
     },
 };
 use flowy_derive::{ProtoBuf, ProtoBuf_Enum};
+use serde::de::Unexpected;
+use serde::{de, de::Visitor, Deserializer};
 use serde::{Deserialize, Serialize};
 use std::convert::TryInto;
 
@@ -62,7 +64,7 @@ impl std::convert::From<View> for Trash {
     }
 }
 
-#[derive(Eq, PartialEq, Debug, ProtoBuf_Enum, Clone, Serialize, Deserialize)]
+#[derive(Eq, PartialEq, Debug, ProtoBuf_Enum, Clone, Serialize)]
 pub enum ViewType {
     Blank = 0,
     QuillDocument = 1,
@@ -71,7 +73,7 @@ pub enum ViewType {
 
 impl std::default::Default for ViewType {
     fn default() -> Self {
-        ViewType::Blank
+        ViewType::QuillDocument
     }
 }
 
@@ -277,3 +279,45 @@ impl TryInto<UpdateViewParams> for UpdateViewPayload {
         })
     }
 }
+
+impl<'de> Deserialize<'de> for ViewType {
+    fn deserialize<D>(deserializer: D) -> Result<Self, <D as Deserializer<'de>>::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        struct ViewTypeVisitor();
+
+        impl<'de> Visitor<'de> for ViewTypeVisitor {
+            type Value = ViewType;
+            fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
+                formatter.write_str("QuillDocument, Kanban, Blank")
+            }
+
+            fn visit_str<E>(self, s: &str) -> Result<Self::Value, E>
+            where
+                E: de::Error,
+            {
+                let mut view_type = None;
+                match s {
+                    "Doc" => {
+                        view_type = Some(ViewType::QuillDocument);
+                    }
+                    "QuillDocument" => {
+                        view_type = Some(ViewType::QuillDocument);
+                    }
+                    "Kanban" => {
+                        view_type = Some(ViewType::Kanban);
+                    }
+                    "Blank" => {
+                        view_type = Some(ViewType::Blank);
+                    }
+                    unknown => {
+                        return Err(de::Error::invalid_value(Unexpected::Str(unknown), &self));
+                    }
+                }
+                Ok(view_type.unwrap())
+            }
+        }
+        deserializer.deserialize_any(ViewTypeVisitor())
+    }
+}