@@ -26,12 +26,13 @@ pub const FONT_BOLD_ID: &'static str = "bold";
2626#[ derive( serde:: Deserialize , serde:: Serialize , Debug ) ]
2727#[ serde( default ) ]
2828pub struct EditorApp {
29- package_state : PackageState ,
3029 theme_name : String ,
3130 show_tree : bool ,
3231 show_properties : bool ,
3332 recent_files : BTreeSet < PathBuf > ,
3433 #[ serde( skip) ]
34+ package_state : PackageState ,
35+ #[ serde( skip) ]
3536 storage : SharedPackageBytesStorage ,
3637}
3738
@@ -54,9 +55,7 @@ impl EditorApp {
5455 // Load previous app state (if any).
5556 // Note that you must enable the `persistence` feature for this to work.
5657 let mut app: Self = if let Some ( storage) = cc. storage {
57- eframe:: get_value :: < Vec < u8 > > ( storage, eframe:: APP_KEY )
58- . and_then ( |binary| bincode:: deserialize ( & binary) . ok ( ) )
59- . unwrap_or_default ( )
58+ eframe:: get_value ( storage, eframe:: APP_KEY ) . unwrap_or_default ( )
6059 } else {
6160 Default :: default ( )
6261 } ;
@@ -100,12 +99,7 @@ impl EditorApp {
10099impl eframe:: App for EditorApp {
101100 /// Called by the frame work to save state before shutdown.
102101 fn save ( & mut self , storage : & mut dyn eframe:: Storage ) {
103- match bincode:: serialize ( self ) {
104- Ok ( binary) => {
105- eframe:: set_value ( storage, eframe:: APP_KEY , & binary) ;
106- } ,
107- Err ( err) => error ! ( "Unable to bincode app state: {err}" ) ,
108- }
102+ eframe:: set_value ( storage, eframe:: APP_KEY , self ) ;
109103 }
110104
111105 fn update ( & mut self , ctx : & egui:: Context , frame : & mut eframe:: Frame ) {
@@ -334,18 +328,38 @@ impl eframe::App for EditorApp {
334328 }
335329}
336330
337- #[ derive( serde :: Deserialize , serde :: Serialize , Default , Debug ) ]
331+ #[ derive( Default , Debug ) ]
338332enum PackageState {
339333 #[ default]
340334 None ,
341- #[ serde( skip) ]
342- Loading ( LoadingPackageReceiver ) ,
343335 Active {
336+ // #[serde(with = "package_state_serde")]
344337 package : Package ,
345338 selected : Option < PackageNode > ,
346339 } ,
340+ Loading ( LoadingPackageReceiver ) ,
347341}
348342
343+ // mod package_state_serde {
344+ // use opensi_core::prelude::Package;
345+ // use serde::{Deserialize, Serialize};
346+
347+ // pub fn deserialize<'de, D: serde::Deserializer<'de>>(
348+ // deserializer: D,
349+ // ) -> Result<Package, D::Error> {
350+ // let buffer = Vec::<u8>::deserialize(deserializer)?;
351+ // Package::from_zip_buffer(buffer).map_err(serde::de::Error::custom)
352+ // }
353+
354+ // pub fn serialize<S: serde::Serializer>(
355+ // data: &Package,
356+ // serializer: S,
357+ // ) -> Result<S::Ok, S::Error> {
358+ // let buffer = data.to_bytes().map_err(serde::ser::Error::custom)?;
359+ // buffer.serialize(serializer)
360+ // }
361+ // }
362+
349363#[ derive( Clone , Default , Debug ) ]
350364pub struct SharedPackageBytesStorage {
351365 cache : Arc < dashmap:: DashMap < String , egui:: load:: Bytes > > ,
0 commit comments