Beispiel #1
0
        public async Task Fetch()
        {
            _fetched = false;

            switch (_type)
            {
                #if FIREBASE_REALTIME_DATABASE
            case FirebaseCloudRemoteConfigType.RealtimeDatabase:
            {
                await new WaitUntil(() => _fetched);
                break;
            }
                #endif

                #if FIREBASE_REMOTE_CONFIG
            case FirebaseCloudRemoteConfigType.RemoteConfig:
            {
                if (_fetching)
                {
                    return;
                }

                _fetching = true;

                await FRC.FetchAsync(TimeSpan.Zero);

                FRC.ActivateFetched();

                _fetched  = true;
                _fetching = false;

                break;
            }
                #endif
            }
        }
Beispiel #2
0
        public T GetConfig <T>(string key)
        {
            switch (_type)
            {
                #if FIREBASE_REALTIME_DATABASE
            case FirebaseCloudRemoteConfigType.RealtimeDatabase:
            {
                if (_reference.data.IsNull())
                {
                    break;
                }

                var result = default(T);
                if (!_reference.data.IsNullOrEmpty() && _reference.data.ContainsKey(key))
                {
                    if (_reference.data[key].To <T>(out result))
                    {
                        return(result);
                    }
                }

                break;
            }
                #endif

                #if FIREBASE_REMOTE_CONFIG
            case FirebaseCloudRemoteConfigType.RemoteConfig:
            {
                var cfg    = FRC.GetValue(key);
                var result = default(T);

                //interger
                if (typeof(T) == typeof(int) && FRC.GetValue(key).DoubleValue.ToInt32().To <T>(out result))
                {
                    return(result);
                }

                //Float
                if (typeof(T) == typeof(float) && FRC.GetValue(key).DoubleValue.ToSingle().To <T>(out result))
                {
                    return(result);
                }

                //double
                if (typeof(T) == typeof(double) && FRC.GetValue(key).DoubleValue.To <T>(out result))
                {
                    return(result);
                }

                //Bool
                if (typeof(T) == typeof(bool) && FRC.GetValue(key).BooleanValue.To <T>(out result))
                {
                    return(result);
                }

                //Long
                if (typeof(T) == typeof(long) && FRC.GetValue(key).LongValue.To <T>(out result))
                {
                    return(result);
                }

                //Long
                if (typeof(T) == typeof(string) && FRC.GetValue(key).StringValue.To <T>(out result))
                {
                    return(result);
                }

                break;
            }
                #endif
            }

            return(default(T));
        }