/ src / data / data.rs
data.rs
  1  use tracing::warn;
  2  use crate::data::{AppState, PlatformState, UserState};
  3  use crate::io::{loadAppSettings, loadSettings_BattleNet, loadSettings_Rpcs3,
  4  	loadUserData_BattleNet, loadUserData_BattleNet_lossy, loadUserData_Gog,
  5  	loadUserData_Gog_lossy, loadUserData_RetroAchievements,
  6  	loadUserData_RetroAchievements_lossy, loadUserData_Rpcs3,
  7  	loadUserData_Rpcs3_lossy, loadUserData_Steam, loadUserData_Steam_lossy};
  8  
  9  #[derive(Clone, Debug)]
 10  pub struct AppData
 11  {
 12  	pub app: AppState,
 13  	pub platform: PlatformState,
 14  	pub user: UserState,
 15  }
 16  
 17  impl Default for AppData
 18  {
 19  	fn default() -> Self
 20  	{
 21  		return Self
 22  		{
 23  			app: Default::default(),
 24  			platform: Default::default(),
 25  			user: Default::default(),
 26  		}
 27  			.initializeAppSettings()
 28  			.initializeBattleNet()
 29  			.initializeGog()
 30  			.initializeRetroAchievements()
 31  			.initializeRpcs3()
 32  			.initializeSteam();
 33  	}
 34  }
 35  
 36  impl AppData
 37  {
 38  	fn initializeAppSettings(mut self) -> Self
 39  	{
 40  		if let Ok(settings) = loadAppSettings()
 41  		{
 42  			self.app.settings = settings;
 43  		}
 44  		
 45  		return self;
 46  	}
 47  	
 48  	fn initializeBattleNet(mut self) -> Self
 49  	{
 50  		if let Ok(auth) = loadSettings_BattleNet()
 51  		{
 52  			self.platform.battleNet = auth;
 53  		}
 54  		
 55  		match loadUserData_BattleNet()
 56  		{
 57  			Err(e) => {
 58  				warn!("Failed loading Battle.Net user data: {:?}", e);
 59  				warn!("Attempting Battle.Net user data lossy load");
 60  				if let Ok(user) = loadUserData_BattleNet_lossy()
 61  				{
 62  					self.user.battleNet = user;
 63  				}
 64  			},
 65  			Ok(user) => self.user.battleNet = user,
 66  		}
 67  		
 68  		return self;
 69  	}
 70  	
 71  	fn initializeGog(mut self) -> Self
 72  	{
 73  		match loadUserData_Gog()
 74  		{
 75  			Err(e) => {
 76  				warn!("Failed loading GOG user data: {:?}", e);
 77  				warn!("Attempting GOG user data lossy load");
 78  				if let Ok(user) = loadUserData_Gog_lossy()
 79  				{
 80  					self.user.gog = user;
 81  				}
 82  			}
 83  			Ok(user) => self.user.gog = user,
 84  		}
 85  		
 86  		return self;
 87  	}
 88  	
 89  	fn initializeRetroAchievements(mut self) -> Self
 90  	{
 91  		match loadUserData_RetroAchievements()
 92  		{
 93  			Err(e) => {
 94  				warn!("Failed loading RetroAchievements user data: {:?}", e);
 95  				warn!("Attempting RetroAchievements user data lossy load");
 96  				if let Ok(user) = loadUserData_RetroAchievements_lossy()
 97  				{
 98  					self.user.retroAchievements = user;
 99  				}
100  			},
101  			Ok(user) => self.user.retroAchievements = user,
102  		}
103  		
104  		return self;
105  	}
106  	
107  	fn initializeRpcs3(mut self) -> Self
108  	{
109  		if let Ok(settings) = loadSettings_Rpcs3()
110  		{
111  			self.platform.rpcs3 = settings;
112  		}
113  		
114  		match loadUserData_Rpcs3()
115  		{
116  			Err(e) => {
117  				warn!("Failed loading RPCS3 user data: {:?}", e);
118  				warn!("Attempting RPCS3 user data lossy load");
119  				if let Ok(user) = loadUserData_Rpcs3_lossy()
120  				{
121  					self.user.rpcs3 = user;
122  				}
123  			},
124  			Ok(user) => self.user.rpcs3 = user,
125  		}
126  		
127  		return self;
128  	}
129  	
130  	fn initializeSteam(mut self) -> Self
131  	{
132  		match loadUserData_Steam()
133  		{
134  			Err(e) => {
135  				warn!("Failed loading Steam user data: {:?}", e);
136  				warn!("Attempting Steam user data lossy load");
137  				if let Ok(user) = loadUserData_Steam_lossy()
138  				{
139  					self.user.steam = user;
140  				}
141  			},
142  			Ok(user) => self.user.steam = user,
143  		}
144  		
145  		return self;
146  	}
147  }