@@ -12,7 +12,7 @@ use libflate::deflate::{Decoder, Encoder};
1212use log:: error;
1313use once_cell:: sync:: Lazy ;
1414use regex:: Regex ;
15- use revision:: revisioned;
15+ use revision:: { revisioned, Error } ;
1616use rinja:: Template ;
1717use rust_embed:: RustEmbed ;
1818use serde:: { Deserialize , Deserializer , Serialize , Serializer } ;
@@ -621,14 +621,16 @@ pub struct Params {
621621}
622622
623623#[ derive( Default , Serialize , Deserialize , Debug , PartialEq , Eq ) ]
624- #[ revisioned( revision = 1 ) ]
624+ #[ revisioned( revision = 2 ) ]
625625pub struct Preferences {
626626 #[ revision( start = 1 ) ]
627627 #[ serde( skip_serializing, skip_deserializing) ]
628628 pub available_themes : Vec < String > ,
629- #[ revision( start = 1 ) ]
629+ #[ revision( start = 1 , end = 2 , convert_fn="convert_theme" ) ]
630+ pub theme : String ,
631+ #[ revision( start = 2 ) ]
630632 pub theme_light : String ,
631- #[ revision( start = 1 ) ]
633+ #[ revision( start = 2 ) ]
632634 pub theme_dark : String ,
633635 #[ revision( start = 1 ) ]
634636 pub front_page : String ,
@@ -746,6 +748,11 @@ impl Preferences {
746748 pub fn to_bincode_str ( & self ) -> Result < String , String > {
747749 Ok ( base2048:: encode ( & self . to_compressed_bincode ( ) ?) )
748750 }
751+ fn convert_theme ( & mut self , _revision : u16 , value : String ) -> Result < ( ) , Error > {
752+ self . theme_light = value. clone ( ) ;
753+ self . theme_dark = value. clone ( ) ;
754+ Ok ( ( ) )
755+ }
749756}
750757
751758pub fn deflate_compress ( i : Vec < u8 > ) -> Result < Vec < u8 > , String > {
0 commit comments