firebase_rs_sdk/util/
environment.rs1use std::env;
2
3fn forced_environment() -> Option<String> {
4 env::var("FIREBASE_FORCE_ENVIRONMENT").ok()
5}
6
7pub fn get_user_agent() -> String {
8 env::var("FIREBASE_USER_AGENT").unwrap_or_default()
9}
10
11pub fn is_mobile_cordova() -> bool {
12 false
13}
14
15pub fn is_node() -> bool {
16 match forced_environment().as_deref() {
17 Some("browser") => false,
18 Some("node") => true,
19 _ => true,
20 }
21}
22
23pub fn is_browser() -> bool {
24 match forced_environment().as_deref() {
25 Some("browser") => true,
26 Some("node") => false,
27 _ => false,
28 }
29}
30
31pub fn is_web_worker() -> bool {
32 false
33}
34
35pub fn is_cloudflare_worker() -> bool {
36 false
37}
38
39pub fn is_browser_extension() -> bool {
40 false
41}
42
43pub fn is_react_native() -> bool {
44 false
45}
46
47pub fn is_electron() -> bool {
48 get_user_agent().contains("Electron/")
49}
50
51pub fn is_safari() -> bool {
52 false
53}
54
55pub fn is_safari_or_webkit() -> bool {
56 false
57}
58
59pub fn is_indexed_db_available() -> bool {
60 false
61}
62
63pub fn are_cookies_enabled() -> bool {
64 false
65}
66
67pub fn is_uwp() -> bool {
68 false
69}
70
71#[cfg(test)]
72mod tests {
73 use super::*;
74
75 #[test]
76 fn default_environment_is_node() {
77 assert!(is_node());
78 assert!(!is_browser());
79 }
80
81 #[test]
82 fn detect_electron_user_agent() {
83 unsafe { env::set_var("FIREBASE_USER_AGENT", "Electron/1.0") };
84 assert!(is_electron());
85 unsafe { env::remove_var("FIREBASE_USER_AGENT") };
86 }
87}