firebase_js/
app.rs

1use firebase_js_sys::ModuleApp;
2use serde::{Deserialize, Serialize};
3use wasm_bindgen::prelude::*;
4
5use serde_wasm_bindgen::to_value;
6
7use crate::FirebaseError;
8
9#[derive(Serialize, Deserialize)]
10pub struct FirebaseConfig {
11	#[serde(rename = "apiKey")]
12	pub api_key: String,
13
14	#[serde(rename = "authDomain")]
15	pub auth_domain: String,
16
17	#[serde(rename = "projectId")]
18	pub project_id: String,
19
20	#[serde(rename = "storageBucket")]
21	pub storage_bucket: String,
22
23	#[serde(rename = "messagingSenderId")]
24	pub messaging_sender_id: String,
25
26	#[serde(rename = "appId")]
27	pub app_id: String,
28
29	#[serde(rename = "measurementId")]
30	pub measurement_id: String,
31
32	#[serde(rename = "databaseURL")]
33	pub database_url: String,
34}
35
36pub struct FirebaseApp(JsValue);
37
38impl Into<JsValue> for FirebaseApp {
39	fn into(self) -> JsValue {
40		self.0
41	}
42}
43
44impl FirebaseApp {
45	pub fn get_js_value(&self) -> &JsValue {
46		&self.0
47	}
48}
49
50pub fn initialize_app(firebase_config: &FirebaseConfig) -> Result<FirebaseApp, FirebaseError> {
51	match to_value(firebase_config) {
52		Ok(val) => {
53			let app: JsValue = ModuleApp::initialize_app(&val);
54			Ok(FirebaseApp(app))
55		},
56		Err(_) => Err(FirebaseError::UnimplementedErrorHandling),
57	}
58}