public override void OnMessageReceived(RemoteMessage message)
        {
            //Log.Debug(TAG, "From: " + message.From);
            //var body = message.GetNotification().Body;
            //Log.Debug(TAG, "Notification Message Body: " + body);
            Log.Info(TAG, $"Received a firebase request from {message.From}.");
            if (message.From == $"/topics/{MainActivity.CHANNEL_ID}")
            {
                Log.Debug(TAG, "Received an announcement.");
                SendNotification(message.GetNotification().Body, message.GetNotification().Title, message.Data);
            }
            else if (message.From == $"/topics/{MainActivity.UPDATE_CHANNEL_NAME}" &&
                     !Preferences.ContainsKey("DisableAutoUpdate"))
            {
                Log.Debug(TAG, "Received an update request.");

                if (!message.Data.ContainsKey("region") || !int.TryParse(message.Data["region"], out var region))
                {
                    Log.Warn(TAG, "Firebase message missing region.");
                    return;
                }

                if (region < 1 || region > 2)
                {
                    Log.Warn(TAG, "Invalid region for update request.");
                    return;
                }

                string preferencesKey = "";
                switch (region)
                {
                case 1:
                    preferencesKey = $"InstalledScript_{FGORegion.Jp}";
                    break;

                case 2:
                    preferencesKey = $"InstalledScript_{FGORegion.Na}";
                    break;
                }

                if (Preferences.Get(preferencesKey, null) == null)
                {
                    Log.Warn(TAG, "User hasn't installed any script for this region.");
                    return;
                }

                var data = new Data.Builder();
                data.PutInt("region", region);
                data.PutString("preferencesKey", preferencesKey);
                var finalData = data.Build();
                var builder   = OneTimeWorkRequest.Builder.From <RayshiftTranslationUpdateWorker>();
                builder.SetInputData(finalData);

                OneTimeWorkRequest request = builder.Build();
                WorkManager.Instance.Enqueue(request);
            }
        }
Ejemplo n.º 2
0
        public async Task <string> StartUploadForIdAsync(Guid id)
        {
            Data.Builder data = new Data.Builder();
            data.PutString("id", id.ToString());
            OneTimeWorkRequest oneTimeWorkRequest = OneTimeWorkRequest.Builder.From <RandomUploadWorker>()
                                                    .SetInputData(data.Build())
                                                    .Build();

            WorkManager.Instance.Enqueue(oneTimeWorkRequest);

            ILifecycleOwner owner = ProcessLifecycleOwner.Get();

            //Observe what happened to this request so we can notify the UI
            WorkManager.Instance.GetWorkInfoByIdLiveData(oneTimeWorkRequest.Id).Observe(owner, new RandomWorkerObserver());
            return(oneTimeWorkRequest.Id.ToString());
        }
Ejemplo n.º 3
0
        public void CreateUniqueWorker <T>() where T : Worker
        {
            OneTimeWorkRequest oneTimeWorkRequest = OneTimeWorkRequest.Builder.From <T>().Build();

            WorkManager.GetInstance(Platform.AppContext).EnqueueUniqueWork(typeof(T).Name, ExistingWorkPolicy.Replace, oneTimeWorkRequest);
        }