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

This commit is contained in:
appflowy 2022-02-26 18:28:09 +08:00
parent c843571e3d
commit d18e06a9ef
4 changed files with 58 additions and 13 deletions

View File

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

View File

@ -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;
}

View File

@ -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(

View File

@ -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())
}
}