diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d88bff8e..87d87c67 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -203,7 +203,7 @@
-
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/task/IApiTask.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/task/IApiTask.kt
index 1b7acbc0..2d0efe0d 100644
--- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/task/IApiTask.kt
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/task/IApiTask.kt
@@ -39,4 +39,18 @@ abstract class IApiTask(open val profileId: Int) {
override fun toString(): String {
return "IApiTask(profileId=$profileId, taskId=$taskId, profile=$profile, taskName=$taskName)"
}
+
+ companion object {
+ fun enqueueAll(context: Context, tasks: List) {
+ Intent(context, ApiService::class.java).let {
+ if (SDK_INT >= O)
+ context.startForegroundService(it)
+ else
+ context.startService(it)
+ }
+ tasks.forEach {
+ EventBus.getDefault().postSticky(it)
+ }
+ }
+ }
}
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/sync/FirebaseBroadcastReceiver.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/FirebaseBroadcastReceiver.kt
similarity index 91%
rename from app/src/main/java/pl/szczodrzynski/edziennik/sync/FirebaseBroadcastReceiver.kt
rename to app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/FirebaseBroadcastReceiver.kt
index 49763830..25c2de48 100644
--- a/app/src/main/java/pl/szczodrzynski/edziennik/sync/FirebaseBroadcastReceiver.kt
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/FirebaseBroadcastReceiver.kt
@@ -1,8 +1,8 @@
/*
- * Copyright (c) Kuba Szczodrzyński 2019-10-11.
+ * Copyright (c) Kuba Szczodrzyński 2020-1-11.
*/
-package pl.szczodrzynski.edziennik.sync
+package pl.szczodrzynski.edziennik.data.firebase
import android.content.Context
import android.content.Intent
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/sync/FirebaseSendException.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/FirebaseSendException.kt
similarity index 93%
rename from app/src/main/java/pl/szczodrzynski/edziennik/sync/FirebaseSendException.kt
rename to app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/FirebaseSendException.kt
index 9453d8d5..04cb7c23 100644
--- a/app/src/main/java/pl/szczodrzynski/edziennik/sync/FirebaseSendException.kt
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/FirebaseSendException.kt
@@ -2,7 +2,7 @@
* Copyright (c) Kuba Szczodrzyński 2020-1-11.
*/
-package pl.szczodrzynski.edziennik.sync
+package pl.szczodrzynski.edziennik.data.firebase
class FirebaseSendException(reason: String?) : Exception(reason) {
companion object {
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/sync/FirebaseService.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/FirebaseService.kt
similarity index 99%
rename from app/src/main/java/pl/szczodrzynski/edziennik/sync/FirebaseService.kt
rename to app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/FirebaseService.kt
index 03d1602f..53e9d94b 100644
--- a/app/src/main/java/pl/szczodrzynski/edziennik/sync/FirebaseService.kt
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/FirebaseService.kt
@@ -2,7 +2,7 @@
* Copyright (c) Kuba Szczodrzyński 2020-1-11.
*/
-package pl.szczodrzynski.edziennik.sync
+package pl.szczodrzynski.edziennik.data.firebase
import android.annotation.SuppressLint
import android.app.PendingIntent
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/sync/MyFirebaseMessagingService.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/MyFirebaseMessagingService.java
similarity index 95%
rename from app/src/main/java/pl/szczodrzynski/edziennik/sync/MyFirebaseMessagingService.java
rename to app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/MyFirebaseMessagingService.java
index 45a625bb..ff4a99a2 100644
--- a/app/src/main/java/pl/szczodrzynski/edziennik/sync/MyFirebaseMessagingService.java
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/MyFirebaseMessagingService.java
@@ -1,4 +1,8 @@
-package pl.szczodrzynski.edziennik.sync;
+/*
+ * Copyright (c) Kuba Szczodrzyński 2020-1-11.
+ */
+
+package pl.szczodrzynski.edziennik.data.firebase;
import android.content.Context;
import android.content.Intent;
@@ -19,22 +23,18 @@ import pl.szczodrzynski.edziennik.MainActivity;
import pl.szczodrzynski.edziennik.R;
import pl.szczodrzynski.edziennik.data.api.task.EdziennikTask;
import pl.szczodrzynski.edziennik.data.db.entity.Event;
-import pl.szczodrzynski.edziennik.data.db.full.EventFull;
import pl.szczodrzynski.edziennik.data.db.entity.EventType;
import pl.szczodrzynski.edziennik.data.db.entity.FeedbackMessage;
+import pl.szczodrzynski.edziennik.data.db.entity.LoginStore;
import pl.szczodrzynski.edziennik.data.db.entity.Profile;
import pl.szczodrzynski.edziennik.data.db.entity.Team;
+import pl.szczodrzynski.edziennik.data.db.full.EventFull;
import pl.szczodrzynski.edziennik.network.ServerRequest;
import pl.szczodrzynski.edziennik.ui.modules.base.DebugFragment;
import pl.szczodrzynski.edziennik.utils.models.Notification;
import static pl.szczodrzynski.edziennik.App.APP_URL;
import static pl.szczodrzynski.edziennik.data.db.entity.Event.TYPE_HOMEWORK;
-import static pl.szczodrzynski.edziennik.data.db.entity.LoginStore.LOGIN_TYPE_MOBIDZIENNIK;
-import static pl.szczodrzynski.edziennik.data.db.entity.Notification.TYPE_FEEDBACK_MESSAGE;
-import static pl.szczodrzynski.edziennik.data.db.entity.Notification.TYPE_NEW_SHARED_EVENT;
-import static pl.szczodrzynski.edziennik.data.db.entity.Notification.TYPE_NEW_SHARED_HOMEWORK;
-import static pl.szczodrzynski.edziennik.data.db.entity.Notification.TYPE_SERVER_MESSAGE;
import static pl.szczodrzynski.edziennik.utils.Utils.d;
import static pl.szczodrzynski.edziennik.utils.Utils.strToInt;
@@ -93,7 +93,7 @@ public class MyFirebaseMessagingService extends FirebaseMessagingService {
Profile profile = null;
for (Profile profileFull: profileList) {
- if (profileFull.getLoginStoreType() == LOGIN_TYPE_MOBIDZIENNIK
+ if (profileFull.getLoginStoreType() == LoginStore.LOGIN_TYPE_MOBIDZIENNIK
&& studentId == profileFull.getStudentData("studentId", -1)) {
profile = profileFull;
break;
@@ -182,7 +182,7 @@ public class MyFirebaseMessagingService extends FirebaseMessagingService {
case "message":
app.notifier.add(new Notification(app.getContext(), remoteMessage.getData().get("message"))
.withTitle(remoteMessage.getData().get("title"))
- .withType(TYPE_SERVER_MESSAGE)
+ .withType(pl.szczodrzynski.edziennik.data.db.entity.Notification.TYPE_SERVER_MESSAGE)
.withFragmentRedirect(MainActivity.DRAWER_ITEM_NOTIFICATIONS)
);
app.notifier.postAll();
@@ -209,7 +209,7 @@ public class MyFirebaseMessagingService extends FirebaseMessagingService {
app.notifier.add(new Notification(app.getContext(), feedbackMessage.text)
.withTitle(remoteMessage.getData().get("title"))
- .withType(TYPE_FEEDBACK_MESSAGE)
+ .withType(pl.szczodrzynski.edziennik.data.db.entity.Notification.TYPE_FEEDBACK_MESSAGE)
.withFragmentRedirect(MainActivity.TARGET_FEEDBACK)
);
app.notifier.postAll();
@@ -231,7 +231,7 @@ public class MyFirebaseMessagingService extends FirebaseMessagingService {
});
app.notifier.add(new Notification(app.getContext(), remoteMessage.getData().get("message"))
.withTitle(remoteMessage.getData().get("title"))
- .withType(TYPE_FEEDBACK_MESSAGE)
+ .withType(pl.szczodrzynski.edziennik.data.db.entity.Notification.TYPE_FEEDBACK_MESSAGE)
.withFragmentRedirect(MainActivity.TARGET_FEEDBACK)
);
app.notifier.postAll();
@@ -285,7 +285,7 @@ public class MyFirebaseMessagingService extends FirebaseMessagingService {
EventType eventType = app.db.eventTypeDao().getByIdNow(profile.getId(), event.type);
app.notifier.add(new Notification(app.getContext(), app.getString((oldEvent == null ? R.string.notification_shared_event_format : R.string.notification_shared_event_modified_format), event.sharedByName, eventType == null ? "wydarzenie" : eventType.name, event.eventDate.getFormattedString(), event.topic))
.withProfileData(profile.getId(), profile.getName())
- .withType(event.type == TYPE_HOMEWORK ? TYPE_NEW_SHARED_HOMEWORK : TYPE_NEW_SHARED_EVENT)
+ .withType(event.type == TYPE_HOMEWORK ? pl.szczodrzynski.edziennik.data.db.entity.Notification.TYPE_NEW_SHARED_HOMEWORK : pl.szczodrzynski.edziennik.data.db.entity.Notification.TYPE_NEW_SHARED_EVENT)
.withFragmentRedirect(event.type == TYPE_HOMEWORK ? MainActivity.DRAWER_ITEM_HOMEWORK : MainActivity.DRAWER_ITEM_AGENDA)
.withLongExtra("eventDate", event.eventDate.getValue())
);
@@ -304,7 +304,7 @@ public class MyFirebaseMessagingService extends FirebaseMessagingService {
if (oldEvent != null) {
app.notifier.add(new Notification(app.getContext(), app.getString(R.string.notification_shared_event_removed_format, oldEvent.sharedByName, oldEvent.typeName, oldEvent.eventDate.getFormattedString(), oldEvent.topic))
.withProfileData(profile.getId(), profile.getName())
- .withType(oldEvent.type == TYPE_HOMEWORK ? TYPE_NEW_SHARED_HOMEWORK : TYPE_NEW_SHARED_EVENT)
+ .withType(oldEvent.type == TYPE_HOMEWORK ? pl.szczodrzynski.edziennik.data.db.entity.Notification.TYPE_NEW_SHARED_HOMEWORK : pl.szczodrzynski.edziennik.data.db.entity.Notification.TYPE_NEW_SHARED_EVENT)
.withFragmentRedirect(oldEvent.type == TYPE_HOMEWORK ? MainActivity.DRAWER_ITEM_HOMEWORK : MainActivity.DRAWER_ITEM_AGENDA)
.withLongExtra("eventDate", oldEvent.eventDate.getValue())
);
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/MyFirebaseService.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/MyFirebaseService.kt
new file mode 100644
index 00000000..b5eb6811
--- /dev/null
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/MyFirebaseService.kt
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) Kuba Szczodrzyński 2020-1-11.
+ */
+
+package pl.szczodrzynski.edziennik.data.firebase
+
+import android.util.Log
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.launch
+import pl.szczodrzynski.edziennik.App
+import kotlin.coroutines.CoroutineContext
+
+class MyFirebaseService : FirebaseService(), CoroutineScope {
+ companion object {
+ private const val TAG = "MyFirebaseService"
+ }
+
+ private val app by lazy { applicationContext as App }
+
+ private val job = Job()
+ override val coroutineContext: CoroutineContext
+ get() = job + Dispatchers.Main
+
+ override fun onNewToken(token: String?) {
+ Log.d(TAG, "Got new token: $token")
+ app.config.sync.tokenApp = token
+ }
+
+ override fun onMessageReceived(message: Message) {
+ launch(Dispatchers.Default) {
+ Log.d(TAG, "Message received from ${message.from}: $message")
+ val profiles = app.db.profileDao().profilesForSyncNow
+ when (message.from) {
+ "640759989760" -> SzkolnyAppFirebase(app, profiles, message)
+ "747285019373" -> SzkolnyMobidziennikFirebase(app, profiles, message)
+ "513056078587" -> SzkolnyLibrusFirebase(app, profiles, message)
+ "987828170337" -> SzkolnyVulcanFirebase(app, profiles, message)
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyAppFirebase.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyAppFirebase.kt
new file mode 100644
index 00000000..8ac470b9
--- /dev/null
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyAppFirebase.kt
@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) Kuba Szczodrzyński 2020-1-11.
+ */
+
+package pl.szczodrzynski.edziennik.data.firebase
+
+import pl.szczodrzynski.edziennik.App
+import pl.szczodrzynski.edziennik.data.db.entity.Profile
+
+class SzkolnyAppFirebase(val app: App, val profiles: List, val message: FirebaseService.Message) {
+ init {
+
+ }
+}
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyLibrusFirebase.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyLibrusFirebase.kt
new file mode 100644
index 00000000..34c0f220
--- /dev/null
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyLibrusFirebase.kt
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) Kuba Szczodrzyński 2020-1-11.
+ */
+
+package pl.szczodrzynski.edziennik.data.firebase
+
+import pl.szczodrzynski.edziennik.App
+import pl.szczodrzynski.edziennik.data.db.entity.Profile
+
+class SzkolnyLibrusFirebase(val app: App, val profiles: List, val message: FirebaseService.Message) {
+ /*{
+ "gcm.notification.e": "1",
+ "userId": "1234567u",
+ "gcm.notification.sound": "default",
+ "gcm.notification.title": "Synergia",
+ "gcm.notification.sound2": "notify",
+ "image": "www/assets/images/iconPush_01.png",
+ "gcm.notification.body": "Dodano nieobecność nauczyciela od godziny 15:30 do godziny 16:15",
+ "gcm.notification.icon": "notification_event.png",
+ "objectType": "Calendars/TeacherFreeDays",
+ }*/
+ init {
+
+ }
+}
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyMobidziennikFirebase.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyMobidziennikFirebase.kt
new file mode 100644
index 00000000..970cf038
--- /dev/null
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyMobidziennikFirebase.kt
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) Kuba Szczodrzyński 2020-1-11.
+ */
+
+package pl.szczodrzynski.edziennik.data.firebase
+
+import pl.szczodrzynski.edziennik.App
+import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_ATTENDANCE
+import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_BEHAVIOUR
+import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_GRADES
+import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_MESSAGES
+import pl.szczodrzynski.edziennik.data.api.task.EdziennikTask
+import pl.szczodrzynski.edziennik.data.api.task.IApiTask
+import pl.szczodrzynski.edziennik.data.db.entity.Message.TYPE_RECEIVED
+import pl.szczodrzynski.edziennik.data.db.entity.Profile
+import pl.szczodrzynski.edziennik.getLong
+import pl.szczodrzynski.edziennik.getString
+
+class SzkolnyMobidziennikFirebase(val app: App, val profiles: List, val message: FirebaseService.Message) {
+ /*{
+ "id": "123456",
+ "body": "Janósz Kowalski (Nauczyciele) - Temat wiadomości",
+ "icon": "push",
+ "type": "wiadOdebrana",
+ "color": "#025b8e",
+ "login": "1234@2019@szkola",
+ "notId": "1234567",
+ "sound": "default",
+ "title": "Nowa wiadomość - mobiDziennik",
+ "global_id": "123456",
+ "vibrate": "true",
+ "sync_url": "https://szkola.mobidziennik.pl/api2/logowanie"
+ }*/
+ /*{
+ "body": "Kowalski Janósz - zapowiedziany sprawdzian na jutro:\njęzyk niemiecki (kartkówka - nieregularne 2)",
+ "icon": "push",
+ "type": "sprawdzianyJutro",
+ "color": "#025b8e",
+ "login": "1234@2019@szkola",
+ "notId": "1234567",
+ "sound": "default",
+ "title": "Sprawdziany jutro - mobiDziennik",
+ "global_id": "123456",
+ "vibrate": "true",
+ "sync_url": "https://szkola.mobidziennik.pl/api2/logowanie"
+ }*/
+ init { run {
+ val type = message.data.getString("type") ?: return@run
+ if (type == "sprawdzianyJutro" || type == "zadaniaJutro" || type == "autoryzacjaUrzadzenia")
+ return@run
+ val globalId = message.data.getLong("global_id")
+
+ /* assets/www/js/push.js */
+ val viewIdPair = when (type) {
+ "wiadOdebrana" -> DRAWER_ITEM_MESSAGES to TYPE_RECEIVED
+ "oceny", "ocenyKoncowe" -> DRAWER_ITEM_GRADES to 0
+ "uwagi" -> DRAWER_ITEM_BEHAVIOUR to 0
+ "nieobecnoscPierwszaLekcja", "nieobecnosciDzisiaj" -> DRAWER_ITEM_ATTENDANCE to 0
+ else -> return@run
+ }
+
+ val tasks = profiles.filter {
+ it.getStudentData("globalId", 0L) == globalId
+ }.map {
+ EdziennikTask.syncProfile(it.id, listOf(viewIdPair))
+ }
+ IApiTask.enqueueAll(app, tasks)
+ }}
+}
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyVulcanFirebase.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyVulcanFirebase.kt
new file mode 100644
index 00000000..562e17ea
--- /dev/null
+++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyVulcanFirebase.kt
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) Kuba Szczodrzyński 2020-1-11.
+ */
+
+package pl.szczodrzynski.edziennik.data.firebase
+
+import pl.szczodrzynski.edziennik.App
+import pl.szczodrzynski.edziennik.data.db.entity.Profile
+
+class SzkolnyVulcanFirebase(val app: App, val profiles: List, val message: FirebaseService.Message) {
+ /*{
+ "data": {
+ "loginid": 12345,
+ "pupilid": 1234,
+ "unitid": 2,
+ "event": "CDC",
+ "day": "2019-09-09",
+ "table": "Frekwencja"
+ },
+ "title": "Frekwencja",
+ "message: "Uczeń Janósz otrzymał nieobecność na 7 lekcji"
+ }*/
+ init {
+
+ }
+}
diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/sync/MyFirebaseService.kt b/app/src/main/java/pl/szczodrzynski/edziennik/sync/MyFirebaseService.kt
deleted file mode 100644
index 835abb3b..00000000
--- a/app/src/main/java/pl/szczodrzynski/edziennik/sync/MyFirebaseService.kt
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) Kuba Szczodrzyński 2020-1-11.
- */
-
-package pl.szczodrzynski.edziennik.sync
-
-import android.util.Log
-import pl.szczodrzynski.edziennik.App
-
-class MyFirebaseService : FirebaseService() {
- companion object {
- private const val TAG = "MyFirebaseService"
- }
-
- private val app by lazy { applicationContext as App }
-
- override fun onNewToken(token: String?) {
- Log.d(TAG, "Got new token: $token")
- app.config.sync.tokenApp = token
- }
-
- override fun onMessageReceived(message: Message) {
- Log.d(TAG, "Message received from ${message.from}: $message")
- }
-}