mirror of
https://github.com/szkolny-eu/szkolny-android.git
synced 2025-06-27 12:35:29 +02:00
Compare commits
56 Commits
v3.9.12-de
...
v3.9.14-de
Author | SHA1 | Date | |
---|---|---|---|
0f11b02047 | |||
b8cf731dd0 | |||
ad5afac174 | |||
13279a915d | |||
3defe2d343 | |||
2c86414e74 | |||
9e4f816009 | |||
b48afde7f1 | |||
13cdaadcf7 | |||
44fc1c4532 | |||
ddb1ecaa99 | |||
50ada5f95b | |||
40ba9e8434 | |||
d6f9b81de6 | |||
b085d94fea | |||
90343e1e39 | |||
883d8f31c4 | |||
2e18c5a668 | |||
c1ca104021 | |||
e7db4e9326 | |||
203a42eb1b | |||
c83f20983b | |||
25f504cadf | |||
07ce718e3c | |||
83264b5973 | |||
1acf1547d5 | |||
5d3de35c10 | |||
8f8d613f6e | |||
6a161b3c97 | |||
3e97572100 | |||
fc3b6fd1e0 | |||
9bc7f9ac11 | |||
0a2f252405 | |||
09bc658f97 | |||
7b04202a00 | |||
acf364166b | |||
4e88efae94 | |||
8df24dc1c4 | |||
8482c27689 | |||
d1265dc1f2 | |||
47d395de71 | |||
5b443e02a3 | |||
f8a7d52b1d | |||
a133a96819 | |||
c71b8f994c | |||
9b02c97926 | |||
ab06efc934 | |||
928b73f139 | |||
a36fb09bc3 | |||
eaed4b76aa | |||
6d8960f089 | |||
ca3b6d0705 | |||
c2e7931ea6 | |||
d1a5d8cba9 | |||
c2f91e6867 | |||
55e32b8d88 |
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@ -50,7 +50,7 @@
|
|||||||
</value>
|
</value>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="JDK" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
@ -170,6 +170,9 @@ dependencies {
|
|||||||
implementation 'com.github.kuba2k2:RecyclerTabLayout:700f980584'
|
implementation 'com.github.kuba2k2:RecyclerTabLayout:700f980584'
|
||||||
|
|
||||||
implementation 'com.github.kuba2k2:Tachyon:551943a6b5'
|
implementation 'com.github.kuba2k2:Tachyon:551943a6b5'
|
||||||
|
|
||||||
|
implementation "com.squareup.retrofit2:retrofit:${versions.retrofit}"
|
||||||
|
implementation "com.squareup.retrofit2:converter-gson:${versions.retrofit}"
|
||||||
}
|
}
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
-keep class pl.szczodrzynski.edziennik.utils.models.** { *; }
|
-keep class pl.szczodrzynski.edziennik.utils.models.** { *; }
|
||||||
-keep class pl.szczodrzynski.edziennik.data.db.modules.events.Event { *; }
|
-keep class pl.szczodrzynski.edziennik.data.db.modules.events.Event { *; }
|
||||||
-keep class pl.szczodrzynski.edziennik.data.db.modules.events.EventFull { *; }
|
-keep class pl.szczodrzynski.edziennik.data.db.modules.events.EventFull { *; }
|
||||||
|
-keep class pl.szczodrzynski.edziennik.ui.modules.home.HomeCardModel { *; }
|
||||||
-keepclassmembers class pl.szczodrzynski.edziennik.widgets.WidgetConfig { public *; }
|
-keepclassmembers class pl.szczodrzynski.edziennik.widgets.WidgetConfig { public *; }
|
||||||
-keepnames class pl.szczodrzynski.edziennik.WidgetTimetable
|
-keepnames class pl.szczodrzynski.edziennik.WidgetTimetable
|
||||||
-keepnames class pl.szczodrzynski.edziennik.notifications.WidgetNotifications
|
-keepnames class pl.szczodrzynski.edziennik.notifications.WidgetNotifications
|
||||||
|
@ -18,7 +18,6 @@ import android.os.Handler;
|
|||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.util.Base64;
|
import android.util.Base64;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.Pair;
|
|
||||||
|
|
||||||
import androidx.annotation.RequiresApi;
|
import androidx.annotation.RequiresApi;
|
||||||
import androidx.appcompat.app.AppCompatDelegate;
|
import androidx.appcompat.app.AppCompatDelegate;
|
||||||
@ -68,9 +67,9 @@ import me.leolin.shortcutbadger.ShortcutBadger;
|
|||||||
import okhttp3.ConnectionSpec;
|
import okhttp3.ConnectionSpec;
|
||||||
import okhttp3.OkHttpClient;
|
import okhttp3.OkHttpClient;
|
||||||
import okhttp3.TlsVersion;
|
import okhttp3.TlsVersion;
|
||||||
|
import pl.szczodrzynski.edziennik.config.Config;
|
||||||
import pl.szczodrzynski.edziennik.data.db.AppDb;
|
import pl.szczodrzynski.edziennik.data.db.AppDb;
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.debuglog.DebugLog;
|
import pl.szczodrzynski.edziennik.data.db.modules.debuglog.DebugLog;
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore;
|
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile;
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile;
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull;
|
||||||
import pl.szczodrzynski.edziennik.network.NetworkUtils;
|
import pl.szczodrzynski.edziennik.network.NetworkUtils;
|
||||||
@ -83,9 +82,7 @@ import pl.szczodrzynski.edziennik.utils.Themes;
|
|||||||
import pl.szczodrzynski.edziennik.utils.Utils;
|
import pl.szczodrzynski.edziennik.utils.Utils;
|
||||||
import pl.szczodrzynski.edziennik.utils.models.AppConfig;
|
import pl.szczodrzynski.edziennik.utils.models.AppConfig;
|
||||||
|
|
||||||
import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_LIBRUS;
|
|
||||||
import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_MOBIDZIENNIK;
|
import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_MOBIDZIENNIK;
|
||||||
import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_VULCAN;
|
|
||||||
|
|
||||||
public class App extends androidx.multidex.MultiDexApplication implements Configuration.Provider {
|
public class App extends androidx.multidex.MultiDexApplication implements Configuration.Provider {
|
||||||
private static final String TAG = "App";
|
private static final String TAG = "App";
|
||||||
@ -145,6 +142,11 @@ public class App extends androidx.multidex.MultiDexApplication implements Config
|
|||||||
//public Register register; // REGISTER for current profile, read from registerStore
|
//public Register register; // REGISTER for current profile, read from registerStore
|
||||||
|
|
||||||
public ProfileFull profile;
|
public ProfileFull profile;
|
||||||
|
public Config config;
|
||||||
|
private static Config mConfig;
|
||||||
|
public static Config getConfig() {
|
||||||
|
return mConfig;
|
||||||
|
}
|
||||||
|
|
||||||
// other stuff
|
// other stuff
|
||||||
public Gson gson;
|
public Gson gson;
|
||||||
@ -194,6 +196,10 @@ public class App extends androidx.multidex.MultiDexApplication implements Config
|
|||||||
gson = new Gson();
|
gson = new Gson();
|
||||||
networkUtils = new NetworkUtils(this);
|
networkUtils = new NetworkUtils(this);
|
||||||
|
|
||||||
|
config = new Config(db);
|
||||||
|
config.migrate(this);
|
||||||
|
mConfig = config;
|
||||||
|
|
||||||
Iconics.init(getApplicationContext());
|
Iconics.init(getApplicationContext());
|
||||||
Iconics.registerFont(SzkolnyFont.INSTANCE);
|
Iconics.registerFont(SzkolnyFont.INSTANCE);
|
||||||
|
|
||||||
@ -208,7 +214,7 @@ public class App extends androidx.multidex.MultiDexApplication implements Config
|
|||||||
|
|
||||||
loadConfig();
|
loadConfig();
|
||||||
|
|
||||||
Themes.INSTANCE.setThemeInt(appConfig.appTheme);
|
Themes.INSTANCE.setThemeInt(config.getUi().getTheme());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
|
PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
|
||||||
@ -216,7 +222,7 @@ public class App extends androidx.multidex.MultiDexApplication implements Config
|
|||||||
byte[] signatureBytes = signature.toByteArray();
|
byte[] signatureBytes = signature.toByteArray();
|
||||||
MessageDigest md = MessageDigest.getInstance("SHA");
|
MessageDigest md = MessageDigest.getInstance("SHA");
|
||||||
md.update(signatureBytes);
|
md.update(signatureBytes);
|
||||||
this.signature = Base64.encodeToString(md.digest(), Base64.DEFAULT);
|
this.signature = Base64.encodeToString(md.digest(), Base64.NO_WRAP);
|
||||||
//Log.d(TAG, "Signature is "+this.signature);
|
//Log.d(TAG, "Signature is "+this.signature);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -227,7 +233,7 @@ public class App extends androidx.multidex.MultiDexApplication implements Config
|
|||||||
if ("f054761fbdb6a238".equals(deviceId) || BuildConfig.DEBUG) {
|
if ("f054761fbdb6a238".equals(deviceId) || BuildConfig.DEBUG) {
|
||||||
devMode = true;
|
devMode = true;
|
||||||
}
|
}
|
||||||
else if (appConfig.devModePassword != null) {
|
else if (config.getDevModePassword() != null) {
|
||||||
checkDevModePassword();
|
checkDevModePassword();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -298,7 +304,7 @@ public class App extends androidx.multidex.MultiDexApplication implements Config
|
|||||||
|
|
||||||
//profileLoadById(appSharedPrefs.getInt("current_profile_id", 1));
|
//profileLoadById(appSharedPrefs.getInt("current_profile_id", 1));
|
||||||
|
|
||||||
if (appConfig.registerSyncEnabled) {
|
if (config.getSync().getEnabled()) {
|
||||||
SyncWorker.Companion.scheduleNext(this, false);
|
SyncWorker.Companion.scheduleNext(this, false);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -362,11 +368,10 @@ public class App extends androidx.multidex.MultiDexApplication implements Config
|
|||||||
shortcutManager.setDynamicShortcuts(Arrays.asList(shortcutTimetable, shortcutAgenda, shortcutGrades, shortcutHomework, shortcutMessages));
|
shortcutManager.setDynamicShortcuts(Arrays.asList(shortcutTimetable, shortcutAgenda, shortcutGrades, shortcutHomework, shortcutMessages));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (appConfig.appInstalledTime == 0) {
|
if (config.getAppInstalledTime() == 0) {
|
||||||
try {
|
try {
|
||||||
appConfig.appInstalledTime = getPackageManager().getPackageInfo(getPackageName(), 0).firstInstallTime;
|
config.setAppInstalledTime(getPackageManager().getPackageInfo(getPackageName(), 0).firstInstallTime);
|
||||||
appConfig.appRateSnackbarTime = appConfig.appInstalledTime + 7 * 24 * 60 * 60 * 1000;
|
config.setAppRateSnackbarTime(config.getAppInstalledTime() + 7 * 24 * 60 * 60 * 1000);
|
||||||
saveConfig("appInstalledTime", "appRateSnackbarTime");
|
|
||||||
} catch (PackageManager.NameNotFoundException e) {
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -434,9 +439,9 @@ public class App extends androidx.multidex.MultiDexApplication implements Config
|
|||||||
final long startTime = System.currentTimeMillis();
|
final long startTime = System.currentTimeMillis();
|
||||||
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(instanceIdResult -> {
|
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(instanceIdResult -> {
|
||||||
Log.d(TAG, "Token for App is " + instanceIdResult.getToken() + ", ID is " + instanceIdResult.getId()+". Time is "+(System.currentTimeMillis() - startTime));
|
Log.d(TAG, "Token for App is " + instanceIdResult.getToken() + ", ID is " + instanceIdResult.getId()+". Time is "+(System.currentTimeMillis() - startTime));
|
||||||
appConfig.fcmToken = instanceIdResult.getToken();
|
config.getSync().setTokenApp(instanceIdResult.getToken());
|
||||||
});
|
});
|
||||||
FirebaseInstanceId.getInstance(pushMobidziennikApp).getInstanceId().addOnSuccessListener(instanceIdResult -> {
|
/*FirebaseInstanceId.getInstance(pushMobidziennikApp).getInstanceId().addOnSuccessListener(instanceIdResult -> {
|
||||||
Log.d(TAG, "Token for Mobidziennik is " + instanceIdResult.getToken() + ", ID is " + instanceIdResult.getId());
|
Log.d(TAG, "Token for Mobidziennik is " + instanceIdResult.getToken() + ", ID is " + instanceIdResult.getId());
|
||||||
appConfig.fcmTokens.put(LOGIN_TYPE_MOBIDZIENNIK, new Pair<>(instanceIdResult.getToken(), new ArrayList<>()));
|
appConfig.fcmTokens.put(LOGIN_TYPE_MOBIDZIENNIK, new Pair<>(instanceIdResult.getToken(), new ArrayList<>()));
|
||||||
});
|
});
|
||||||
@ -450,7 +455,7 @@ public class App extends androidx.multidex.MultiDexApplication implements Config
|
|||||||
if (pair == null || pair.first == null || !pair.first.equals(instanceIdResult.getToken())) {
|
if (pair == null || pair.first == null || !pair.first.equals(instanceIdResult.getToken())) {
|
||||||
appConfig.fcmTokens.put(LOGIN_TYPE_VULCAN, new Pair<>(instanceIdResult.getToken(), new ArrayList<>()));
|
appConfig.fcmTokens.put(LOGIN_TYPE_VULCAN, new Pair<>(instanceIdResult.getToken(), new ArrayList<>()));
|
||||||
}
|
}
|
||||||
});
|
});*/
|
||||||
|
|
||||||
|
|
||||||
FirebaseMessaging.getInstance().subscribeToTopic(getPackageName());
|
FirebaseMessaging.getInstance().subscribeToTopic(getPackageName());
|
||||||
@ -513,7 +518,8 @@ public class App extends androidx.multidex.MultiDexApplication implements Config
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
} catch (NoSuchFieldException e) {
|
} catch (NoSuchFieldException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
appSharedPrefs.edit().remove("app.appConfig."+fieldName).apply();
|
Log.w(TAG, "Should remove app.appConfig."+fieldName);
|
||||||
|
//appSharedPrefs.edit().remove("app.appConfig."+fieldName).apply(); TODO migration
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -585,7 +591,11 @@ public class App extends androidx.multidex.MultiDexApplication implements Config
|
|||||||
//appSharedPrefs.edit().putString("config", gson.toJson(appConfig)).apply();
|
//appSharedPrefs.edit().putString("config", gson.toJson(appConfig)).apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void profileSave() {
|
||||||
|
AsyncTask.execute(() -> {
|
||||||
|
db.profileDao().add(profile);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public void profileSaveAsync() {
|
public void profileSaveAsync() {
|
||||||
AsyncTask.execute(() -> {
|
AsyncTask.execute(() -> {
|
||||||
@ -606,14 +616,6 @@ public class App extends androidx.multidex.MultiDexApplication implements Config
|
|||||||
db.profileDao().add(profileFull);
|
db.profileDao().add(profileFull);
|
||||||
db.loginStoreDao().add(profileFull);
|
db.loginStoreDao().add(profileFull);
|
||||||
}
|
}
|
||||||
public void profileSaveFull(Profile profile, LoginStore loginStore) {
|
|
||||||
db.profileDao().add(profile);
|
|
||||||
db.loginStoreDao().add(loginStore);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ProfileFull profileGetOrNull(int id) {
|
|
||||||
return db.profileDao().getFullByIdNow(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void profileLoadById(int id) {
|
public void profileLoadById(int id) {
|
||||||
profileLoadById(id, false);
|
profileLoadById(id, false);
|
||||||
@ -636,6 +638,7 @@ public class App extends androidx.multidex.MultiDexApplication implements Config
|
|||||||
MainActivity.Companion.setUseOldMessages(profile.getLoginStoreType() == LOGIN_TYPE_MOBIDZIENNIK && appConfig.mobidziennikOldMessages == 1);
|
MainActivity.Companion.setUseOldMessages(profile.getLoginStoreType() == LOGIN_TYPE_MOBIDZIENNIK && appConfig.mobidziennikOldMessages == 1);
|
||||||
profileId = profile.getId();
|
profileId = profile.getId();
|
||||||
appSharedPrefs.edit().putInt("current_profile_id", profile.getId()).apply();
|
appSharedPrefs.edit().putInt("current_profile_id", profile.getId()).apply();
|
||||||
|
config.setProfile(profileId);
|
||||||
}
|
}
|
||||||
else if (!loadedLast) {
|
else if (!loadedLast) {
|
||||||
profileLoadById(profileLastId(), true);
|
profileLoadById(profileLastId(), true);
|
||||||
@ -706,7 +709,7 @@ public class App extends androidx.multidex.MultiDexApplication implements Config
|
|||||||
|
|
||||||
public void checkDevModePassword() {
|
public void checkDevModePassword() {
|
||||||
try {
|
try {
|
||||||
devMode = Utils.AESCrypt.decrypt("nWFVxY65Pa8/aRrT7EylNAencmOD+IxUY2Gg/beiIWY=", appConfig.devModePassword).equals("ok here you go it's enabled now")
|
devMode = Utils.AESCrypt.decrypt("nWFVxY65Pa8/aRrT7EylNAencmOD+IxUY2Gg/beiIWY=", config.getDevModePassword()).equals("ok here you go it's enabled now")
|
||||||
|| BuildConfig.DEBUG;
|
|| BuildConfig.DEBUG;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
319
app/src/main/java/pl/szczodrzynski/edziennik/App.kt
Normal file
319
app/src/main/java/pl/szczodrzynski/edziennik/App.kt
Normal file
@ -0,0 +1,319 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Kuba Szczodrzyński 2019-11-26.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pl.szczodrzynski.edziennik
|
||||||
|
|
||||||
|
import android.util.Log
|
||||||
|
import androidx.work.Configuration
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.Job
|
||||||
|
import kotlin.coroutines.CoroutineContext
|
||||||
|
|
||||||
|
class Szkolny : /*MultiDexApplication(),*/ Configuration.Provider, CoroutineScope {
|
||||||
|
companion object {
|
||||||
|
var devMode = false
|
||||||
|
}
|
||||||
|
|
||||||
|
//lateinit var db: AppDb
|
||||||
|
//val config by lazy { Config(db); // TODO migrate }
|
||||||
|
|
||||||
|
private val job = Job()
|
||||||
|
override val coroutineContext: CoroutineContext
|
||||||
|
get() = job + Dispatchers.Main
|
||||||
|
override fun getWorkManagerConfiguration() = Configuration.Builder()
|
||||||
|
.setMinimumLoggingLevel(Log.VERBOSE)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
/*val preferences by lazy { getSharedPreferences(getString(R.string.preference_file), Context.MODE_PRIVATE) }
|
||||||
|
val notifier by lazy { Notifier(this) }
|
||||||
|
val permissionChecker by lazy { PermissionChecker(this) }
|
||||||
|
|
||||||
|
lateinit var profile: ProfileFull
|
||||||
|
|
||||||
|
/* _ _ _______ _______ _____
|
||||||
|
| | | |__ __|__ __| __ \
|
||||||
|
| |__| | | | | | | |__) |
|
||||||
|
| __ | | | | | | ___/
|
||||||
|
| | | | | | | | | |
|
||||||
|
|_| |_| |_| |_| |*/
|
||||||
|
val http: OkHttpClient by lazy {
|
||||||
|
val builder = OkHttpClient.Builder()
|
||||||
|
.cache(null)
|
||||||
|
.followRedirects(true)
|
||||||
|
.followSslRedirects(true)
|
||||||
|
.retryOnConnectionFailure(true)
|
||||||
|
.cookieJar(cookieJar)
|
||||||
|
.connectTimeout(20, TimeUnit.SECONDS)
|
||||||
|
.writeTimeout(5, TimeUnit.SECONDS)
|
||||||
|
.readTimeout(10, TimeUnit.SECONDS)
|
||||||
|
builder.installHttpsSupport()
|
||||||
|
|
||||||
|
if (devMode || BuildConfig.DEBUG) {
|
||||||
|
HyperLog.initialize(this)
|
||||||
|
HyperLog.setLogLevel(Log.VERBOSE)
|
||||||
|
HyperLog.setLogFormat(DebugLogFormat(this))
|
||||||
|
val chuckerCollector = ChuckerCollector(this, true, Period.ONE_HOUR)
|
||||||
|
val chuckerInterceptor = ChuckerInterceptor(this, chuckerCollector)
|
||||||
|
builder.addInterceptor(chuckerInterceptor)
|
||||||
|
}
|
||||||
|
|
||||||
|
builder.build()
|
||||||
|
}
|
||||||
|
val httpLazy: OkHttpClient by lazy {
|
||||||
|
http.newBuilder()
|
||||||
|
.followRedirects(false)
|
||||||
|
.followSslRedirects(false)
|
||||||
|
.build()
|
||||||
|
}
|
||||||
|
val cookieJar by lazy { PersistentCookieJar(SetCookieCache(), SharedPrefsCookiePersistor(this)) }
|
||||||
|
|
||||||
|
/* _____ _ _
|
||||||
|
/ ____(_) | |
|
||||||
|
| (___ _ __ _ _ __ __ _| |_ _ _ _ __ ___
|
||||||
|
\___ \| |/ _` | '_ \ / _` | __| | | | '__/ _ \
|
||||||
|
____) | | (_| | | | | (_| | |_| |_| | | | __/
|
||||||
|
|_____/|_|\__, |_| |_|\__,_|\__|\__,_|_| \___|
|
||||||
|
__/ |
|
||||||
|
|__*/
|
||||||
|
private val deviceId: String by lazy { Settings.Secure.getString(contentResolver, Settings.Secure.ANDROID_ID) ?: "" }
|
||||||
|
private val signature: String by lazy {
|
||||||
|
var str = ""
|
||||||
|
try {
|
||||||
|
val packageInfo: PackageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES)
|
||||||
|
for (signature in packageInfo.signatures) {
|
||||||
|
val signatureBytes = signature.toByteArray()
|
||||||
|
val md = MessageDigest.getInstance("SHA")
|
||||||
|
md.update(signatureBytes)
|
||||||
|
str = Base64.encodeToString(md.digest(), Base64.DEFAULT)
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
|
str
|
||||||
|
}
|
||||||
|
private var unreadBadgesAvailable = true
|
||||||
|
|
||||||
|
/* _____ _
|
||||||
|
/ ____| | |
|
||||||
|
___ _ __ | | _ __ ___ __ _| |_ ___
|
||||||
|
/ _ \| '_ \| | | '__/ _ \/ _` | __/ _ \
|
||||||
|
| (_) | | | | |____| | | __/ (_| | || __/
|
||||||
|
\___/|_| |_|\_____|_| \___|\__,_|\__\__*/
|
||||||
|
override fun onCreate() {
|
||||||
|
super.onCreate()
|
||||||
|
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
|
||||||
|
CaocConfig.Builder.create()
|
||||||
|
.backgroundMode(CaocConfig.BACKGROUND_MODE_SHOW_CUSTOM)
|
||||||
|
.enabled(true)
|
||||||
|
.showErrorDetails(true)
|
||||||
|
.showRestartButton(true)
|
||||||
|
.logErrorOnRestart(true)
|
||||||
|
.trackActivities(true)
|
||||||
|
.minTimeBetweenCrashesMs(60*1000)
|
||||||
|
.errorDrawable(R.drawable.ic_rip)
|
||||||
|
.restartActivity(MainActivity::class.java)
|
||||||
|
.errorActivity(CrashActivity::class.java)
|
||||||
|
.apply()
|
||||||
|
Iconics.init(applicationContext)
|
||||||
|
Iconics.registerFont(SzkolnyFont)
|
||||||
|
db = AppDb.getDatabase(this)
|
||||||
|
Themes.themeInt = config.ui.theme
|
||||||
|
MHttp.instance().customOkHttpClient(http)
|
||||||
|
|
||||||
|
devMode = "f054761fbdb6a238" == deviceId || BuildConfig.DEBUG
|
||||||
|
if (config.devModePassword != null)
|
||||||
|
checkDevModePassword()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
launch { async(Dispatchers.Default) {
|
||||||
|
if (config.sync.enabled) {
|
||||||
|
scheduleNext(this@App, false)
|
||||||
|
} else {
|
||||||
|
cancelNext(this@App)
|
||||||
|
}
|
||||||
|
|
||||||
|
db.metadataDao().countUnseen().observeForever { count: Int ->
|
||||||
|
if (unreadBadgesAvailable)
|
||||||
|
unreadBadgesAvailable = ShortcutBadger.applyCount(this@App, count)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
|
||||||
|
val shortcutManager = getSystemService(ShortcutManager::class.java)
|
||||||
|
|
||||||
|
val shortcutTimetable = ShortcutInfo.Builder(this@App, "item_timetable")
|
||||||
|
.setShortLabel(getString(R.string.shortcut_timetable)).setLongLabel(getString(R.string.shortcut_timetable))
|
||||||
|
.setIcon(Icon.createWithResource(this@App, R.mipmap.ic_shortcut_timetable))
|
||||||
|
.setIntent(Intent(Intent.ACTION_MAIN, null, this@App, MainActivity::class.java)
|
||||||
|
.putExtra("fragmentId", MainActivity.DRAWER_ITEM_TIMETABLE))
|
||||||
|
.build()
|
||||||
|
|
||||||
|
val shortcutAgenda = ShortcutInfo.Builder(this@App, "item_agenda")
|
||||||
|
.setShortLabel(getString(R.string.shortcut_agenda)).setLongLabel(getString(R.string.shortcut_agenda))
|
||||||
|
.setIcon(Icon.createWithResource(this@App, R.mipmap.ic_shortcut_agenda))
|
||||||
|
.setIntent(Intent(Intent.ACTION_MAIN, null, this@App, MainActivity::class.java)
|
||||||
|
.putExtra("fragmentId", MainActivity.DRAWER_ITEM_AGENDA))
|
||||||
|
.build()
|
||||||
|
|
||||||
|
val shortcutGrades = ShortcutInfo.Builder(this@App, "item_grades")
|
||||||
|
.setShortLabel(getString(R.string.shortcut_grades)).setLongLabel(getString(R.string.shortcut_grades))
|
||||||
|
.setIcon(Icon.createWithResource(this@App, R.mipmap.ic_shortcut_grades))
|
||||||
|
.setIntent(Intent(Intent.ACTION_MAIN, null, this@App, MainActivity::class.java)
|
||||||
|
.putExtra("fragmentId", MainActivity.DRAWER_ITEM_GRADES))
|
||||||
|
.build()
|
||||||
|
|
||||||
|
val shortcutHomework = ShortcutInfo.Builder(this@App, "item_homeworks")
|
||||||
|
.setShortLabel(getString(R.string.shortcut_homework)).setLongLabel(getString(R.string.shortcut_homework))
|
||||||
|
.setIcon(Icon.createWithResource(this@App, R.mipmap.ic_shortcut_homework))
|
||||||
|
.setIntent(Intent(Intent.ACTION_MAIN, null, this@App, MainActivity::class.java)
|
||||||
|
.putExtra("fragmentId", MainActivity.DRAWER_ITEM_HOMEWORK))
|
||||||
|
.build()
|
||||||
|
|
||||||
|
val shortcutMessages = ShortcutInfo.Builder(this@App, "item_messages")
|
||||||
|
.setShortLabel(getString(R.string.shortcut_messages)).setLongLabel(getString(R.string.shortcut_messages))
|
||||||
|
.setIcon(Icon.createWithResource(this@App, R.mipmap.ic_shortcut_messages))
|
||||||
|
.setIntent(Intent(Intent.ACTION_MAIN, null, this@App, MainActivity::class.java)
|
||||||
|
.putExtra("fragmentId", MainActivity.DRAWER_ITEM_MESSAGES))
|
||||||
|
.build()
|
||||||
|
|
||||||
|
shortcutManager.dynamicShortcuts = listOf(
|
||||||
|
shortcutTimetable,
|
||||||
|
shortcutAgenda,
|
||||||
|
shortcutGrades,
|
||||||
|
shortcutHomework,
|
||||||
|
shortcutMessages
|
||||||
|
)
|
||||||
|
} // shortcuts - end
|
||||||
|
|
||||||
|
if (config.appInstalledTime == 0L)
|
||||||
|
try {
|
||||||
|
config.appInstalledTime = packageManager.getPackageInfo(packageName, 0).firstInstallTime
|
||||||
|
config.appRateSnackbarTime = config.appInstalledTime + 7*DAY*MS
|
||||||
|
} catch (e: NameNotFoundException) {
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
|
|
||||||
|
val pushMobidziennikApp = FirebaseApp.initializeApp(
|
||||||
|
this@App,
|
||||||
|
FirebaseOptions.Builder()
|
||||||
|
.setApiKey("AIzaSyCi5LmsZ5BBCQnGtrdvWnp1bWLCNP8OWQE")
|
||||||
|
.setApplicationId("1:747285019373:android:f6341bf7b158621d")
|
||||||
|
.build(),
|
||||||
|
"Mobidziennik2"
|
||||||
|
)
|
||||||
|
|
||||||
|
val pushLibrusApp = FirebaseApp.initializeApp(
|
||||||
|
this@App,
|
||||||
|
FirebaseOptions.Builder()
|
||||||
|
.setApiKey("AIzaSyDfTuEoYPKdv4aceEws1CO3n0-HvTndz-o")
|
||||||
|
.setApplicationId("1:513056078587:android:1e29083b760af544")
|
||||||
|
.build(),
|
||||||
|
"Librus"
|
||||||
|
)
|
||||||
|
|
||||||
|
val pushVulcanApp = FirebaseApp.initializeApp(
|
||||||
|
this@App,
|
||||||
|
FirebaseOptions.Builder()
|
||||||
|
.setApiKey("AIzaSyDW8MUtanHy64_I0oCpY6cOxB3jrvJd_iA")
|
||||||
|
.setApplicationId("1:987828170337:android:ac97431a0a4578c3")
|
||||||
|
.build(),
|
||||||
|
"Vulcan"
|
||||||
|
)
|
||||||
|
|
||||||
|
try {
|
||||||
|
FirebaseInstanceId.getInstance().instanceId.addOnSuccessListener { instanceIdResult ->
|
||||||
|
val token = instanceIdResult.token
|
||||||
|
config.sync.tokenApp = token
|
||||||
|
}
|
||||||
|
FirebaseInstanceId.getInstance(pushMobidziennikApp).instanceId.addOnSuccessListener { instanceIdResult ->
|
||||||
|
val token = instanceIdResult.token
|
||||||
|
if (token != config.sync.tokenMobidziennik) {
|
||||||
|
config.sync.tokenMobidziennik = token
|
||||||
|
config.sync.tokenMobidziennikList = listOf()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FirebaseInstanceId.getInstance(pushLibrusApp).instanceId.addOnSuccessListener { instanceIdResult ->
|
||||||
|
val token = instanceIdResult.token
|
||||||
|
if (token != config.sync.tokenLibrus) {
|
||||||
|
config.sync.tokenLibrus = token
|
||||||
|
config.sync.tokenLibrusList = listOf()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FirebaseInstanceId.getInstance(pushVulcanApp).instanceId.addOnSuccessListener { instanceIdResult ->
|
||||||
|
val token = instanceIdResult.token
|
||||||
|
if (token != config.sync.tokenVulcan) {
|
||||||
|
config.sync.tokenVulcan = token
|
||||||
|
config.sync.tokenVulcanList = listOf()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FirebaseMessaging.getInstance().subscribeToTopic(packageName)
|
||||||
|
} catch (e: IllegalStateException) {
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun profileLoad(profileId: Int) {
|
||||||
|
db.profileDao().getFullByIdNow(profileId)?.also {
|
||||||
|
profile = it
|
||||||
|
} ?: run {
|
||||||
|
if (!::profile.isInitialized) {
|
||||||
|
profile = ProfileFull(-1, "", "", -1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fun profileLoad(profileId: Int, onSuccess: (profile: ProfileFull) -> Unit) {
|
||||||
|
launch {
|
||||||
|
val deferred = async(Dispatchers.Default) {
|
||||||
|
profileLoad(profileId)
|
||||||
|
}
|
||||||
|
deferred.await()
|
||||||
|
onSuccess(profile)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun OkHttpClient.Builder.installHttpsSupport() {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP_MR1) {
|
||||||
|
try {
|
||||||
|
try {
|
||||||
|
ProviderInstaller.installIfNeeded(this@App)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Log.e("OkHttpTLSCompat", "Play Services not found or outdated")
|
||||||
|
|
||||||
|
val trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm())
|
||||||
|
trustManagerFactory.init(null as KeyStore?)
|
||||||
|
|
||||||
|
val x509TrustManager = trustManagerFactory.trustManagers.singleOrNull { it is X509TrustManager } as X509TrustManager?
|
||||||
|
?: return
|
||||||
|
|
||||||
|
val sc = SSLContext.getInstance("TLSv1.2")
|
||||||
|
sc.init(null, null, null)
|
||||||
|
sslSocketFactory(TLSSocketFactory(sc.socketFactory), x509TrustManager)
|
||||||
|
val cs: ConnectionSpec = ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
|
||||||
|
.tlsVersions(TlsVersion.TLS_1_0)
|
||||||
|
.tlsVersions(TlsVersion.TLS_1_1)
|
||||||
|
.tlsVersions(TlsVersion.TLS_1_2)
|
||||||
|
.build()
|
||||||
|
val specs: MutableList<ConnectionSpec> = ArrayList()
|
||||||
|
specs.add(cs)
|
||||||
|
specs.add(ConnectionSpec.COMPATIBLE_TLS)
|
||||||
|
specs.add(ConnectionSpec.CLEARTEXT)
|
||||||
|
connectionSpecs(specs)
|
||||||
|
}
|
||||||
|
} catch (exc: Exception) {
|
||||||
|
Log.e("OkHttpTLSCompat", "Error while setting TLS 1.2", exc)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun checkDevModePassword() {
|
||||||
|
devMode = try {
|
||||||
|
Utils.AESCrypt.decrypt("nWFVxY65Pa8/aRrT7EylNAencmOD+IxUY2Gg/beiIWY=", config.devModePassword) == "ok here you go it's enabled now" || BuildConfig.DEBUG
|
||||||
|
} catch (e: Exception) {
|
||||||
|
e.printStackTrace()
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
}
|
@ -5,6 +5,8 @@ import android.app.Activity
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.content.res.Resources
|
import android.content.res.Resources
|
||||||
|
import android.graphics.PorterDuff
|
||||||
|
import android.graphics.PorterDuffColorFilter
|
||||||
import android.graphics.Typeface
|
import android.graphics.Typeface
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
@ -13,6 +15,8 @@ import android.text.*
|
|||||||
import android.text.style.ForegroundColorSpan
|
import android.text.style.ForegroundColorSpan
|
||||||
import android.text.style.StrikethroughSpan
|
import android.text.style.StrikethroughSpan
|
||||||
import android.text.style.StyleSpan
|
import android.text.style.StyleSpan
|
||||||
|
import android.util.Base64.NO_WRAP
|
||||||
|
import android.util.Base64.encodeToString
|
||||||
import android.util.LongSparseArray
|
import android.util.LongSparseArray
|
||||||
import android.util.SparseArray
|
import android.util.SparseArray
|
||||||
import android.util.TypedValue
|
import android.util.TypedValue
|
||||||
@ -32,14 +36,20 @@ import im.wangchao.mhttp.Response
|
|||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import okhttp3.RequestBody
|
||||||
|
import okio.Buffer
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher
|
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team
|
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team
|
||||||
import pl.szczodrzynski.edziennik.utils.models.Time
|
import pl.szczodrzynski.edziennik.utils.models.Time
|
||||||
import pl.szczodrzynski.navlib.getColorFromRes
|
import pl.szczodrzynski.navlib.getColorFromRes
|
||||||
|
import java.math.BigInteger
|
||||||
|
import java.security.MessageDigest
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.zip.CRC32
|
import java.util.zip.CRC32
|
||||||
|
import javax.crypto.Mac
|
||||||
|
import javax.crypto.spec.SecretKeySpec
|
||||||
|
|
||||||
|
|
||||||
fun List<Teacher>.byId(id: Long) = firstOrNull { it.id == id }
|
fun List<Teacher>.byId(id: Long) = firstOrNull { it.id == id }
|
||||||
@ -200,6 +210,7 @@ const val DAY = 24L*HOUR
|
|||||||
const val WEEK = 7L*DAY
|
const val WEEK = 7L*DAY
|
||||||
const val MONTH = 30L*DAY
|
const val MONTH = 30L*DAY
|
||||||
const val YEAR = 365L*DAY
|
const val YEAR = 365L*DAY
|
||||||
|
const val MS = 1000L
|
||||||
|
|
||||||
fun <T> LongSparseArray<T>.values(): List<T> {
|
fun <T> LongSparseArray<T>.values(): List<T> {
|
||||||
val result = mutableListOf<T>()
|
val result = mutableListOf<T>()
|
||||||
@ -354,6 +365,28 @@ fun String.crc32(): Long {
|
|||||||
return crc.value
|
return crc.value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun String.hmacSHA1(password: String): String {
|
||||||
|
val key = SecretKeySpec(password.toByteArray(), "HmacSHA1")
|
||||||
|
|
||||||
|
val mac = Mac.getInstance("HmacSHA1").apply {
|
||||||
|
init(key)
|
||||||
|
update(this@hmacSHA1.toByteArray())
|
||||||
|
}
|
||||||
|
|
||||||
|
return encodeToString(mac.doFinal(), NO_WRAP)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun String.md5(): String {
|
||||||
|
val md = MessageDigest.getInstance("MD5")
|
||||||
|
return BigInteger(1, md.digest(toByteArray())).toString(16).padStart(32, '0')
|
||||||
|
}
|
||||||
|
|
||||||
|
fun RequestBody.bodyToString(): String {
|
||||||
|
val buffer = Buffer()
|
||||||
|
writeTo(buffer)
|
||||||
|
return buffer.readUtf8()
|
||||||
|
}
|
||||||
|
|
||||||
fun Long.formatDate(format: String = "yyyy-MM-dd HH:mm:ss"): String = SimpleDateFormat(format).format(this)
|
fun Long.formatDate(format: String = "yyyy-MM-dd HH:mm:ss"): String = SimpleDateFormat(format).format(this)
|
||||||
|
|
||||||
fun CharSequence?.asColoredSpannable(colorInt: Int): Spannable {
|
fun CharSequence?.asColoredSpannable(colorInt: Int): Spannable {
|
||||||
@ -587,3 +620,18 @@ fun Context.timeLeft(time: Int, delimiter: String = " "): String {
|
|||||||
|
|
||||||
return parts.joinToString(delimiter) { resources.getQuantityString(it.first, it.second, it.second) }
|
return parts.joinToString(delimiter) { resources.getQuantityString(it.first, it.second, it.second) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline fun <reified T> Any?.instanceOfOrNull(): T? {
|
||||||
|
return when (this) {
|
||||||
|
is T -> this
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Drawable.setTintColor(color: Int): Drawable {
|
||||||
|
colorFilter = PorterDuffColorFilter(
|
||||||
|
color,
|
||||||
|
PorterDuff.Mode.SRC_ATOP
|
||||||
|
)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
@ -37,7 +37,7 @@ import org.greenrobot.eventbus.ThreadMode
|
|||||||
import pl.droidsonroids.gif.GifDrawable
|
import pl.droidsonroids.gif.GifDrawable
|
||||||
import pl.szczodrzynski.edziennik.App.APP_URL
|
import pl.szczodrzynski.edziennik.App.APP_URL
|
||||||
import pl.szczodrzynski.edziennik.api.v2.events.*
|
import pl.szczodrzynski.edziennik.api.v2.events.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.events.task.EdziennikTask
|
import pl.szczodrzynski.edziennik.api.v2.task.EdziennikTask
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.*
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.*
|
||||||
import pl.szczodrzynski.edziennik.databinding.ActivitySzkolnyBinding
|
import pl.szczodrzynski.edziennik.databinding.ActivitySzkolnyBinding
|
||||||
import pl.szczodrzynski.edziennik.network.ServerRequest
|
import pl.szczodrzynski.edziennik.network.ServerRequest
|
||||||
@ -243,7 +243,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
setTheme(Themes.appTheme)
|
setTheme(Themes.appTheme)
|
||||||
|
|
||||||
app.appConfig.language?.let {
|
app.config.ui.language?.let {
|
||||||
setLanguage(it)
|
setLanguage(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -306,10 +306,10 @@ class MainActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
drawer.apply {
|
drawer.apply {
|
||||||
setAccountHeaderBackground(app.appConfig.headerBackground)
|
setAccountHeaderBackground(app.config.ui.headerBackground)
|
||||||
|
|
||||||
drawerProfileListEmptyListener = {
|
drawerProfileListEmptyListener = {
|
||||||
app.appConfig.loginFinished = false
|
app.config.loginFinished = false
|
||||||
app.saveConfig("loginFinished")
|
app.saveConfig("loginFinished")
|
||||||
profileListEmptyListener()
|
profileListEmptyListener()
|
||||||
}
|
}
|
||||||
@ -334,7 +334,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
drawerProfileSettingClickListener = this@MainActivity.profileSettingClickListener
|
drawerProfileSettingClickListener = this@MainActivity.profileSettingClickListener
|
||||||
|
|
||||||
miniDrawerVisibleLandscape = null
|
miniDrawerVisibleLandscape = null
|
||||||
miniDrawerVisiblePortrait = app.appConfig.miniDrawerVisible
|
miniDrawerVisiblePortrait = app.config.ui.miniMenuVisible
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -387,21 +387,23 @@ class MainActivity : AppCompatActivity() {
|
|||||||
SyncWorker.scheduleNext(app)
|
SyncWorker.scheduleNext(app)
|
||||||
|
|
||||||
// APP BACKGROUND
|
// APP BACKGROUND
|
||||||
if (app.appConfig.appBackground != null) {
|
if (app.config.ui.appBackground != null) {
|
||||||
try {
|
try {
|
||||||
var bg = app.appConfig.appBackground
|
app.config.ui.appBackground?.let {
|
||||||
val bgDir = File(Environment.getExternalStoragePublicDirectory("Szkolny.eu"), "bg")
|
var bg = it
|
||||||
if (bgDir.exists()) {
|
val bgDir = File(Environment.getExternalStoragePublicDirectory("Szkolny.eu"), "bg")
|
||||||
val files = bgDir.listFiles()
|
if (bgDir.exists()) {
|
||||||
val r = Random()
|
val files = bgDir.listFiles()
|
||||||
val i = r.nextInt(files.size)
|
val r = Random()
|
||||||
bg = files[i].toString()
|
val i = r.nextInt(files.size)
|
||||||
}
|
bg = files[i].toString()
|
||||||
val linearLayout = b.root
|
}
|
||||||
if (bg.endsWith(".gif")) {
|
val linearLayout = b.root
|
||||||
linearLayout.background = GifDrawable(bg)
|
if (bg.endsWith(".gif")) {
|
||||||
} else {
|
linearLayout.background = GifDrawable(bg)
|
||||||
linearLayout.background = BitmapDrawable.createFromPath(bg)
|
} else {
|
||||||
|
linearLayout.background = BitmapDrawable.createFromPath(bg)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (e: IOException) {
|
} catch (e: IOException) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
@ -409,7 +411,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// WHAT'S NEW DIALOG
|
// WHAT'S NEW DIALOG
|
||||||
if (app.appConfig.lastAppVersion != BuildConfig.VERSION_CODE) {
|
if (app.config.appVersion < BuildConfig.VERSION_CODE) {
|
||||||
ServerRequest(app, app.requestScheme + APP_URL + "main.php?just_updated", "MainActivity/JU")
|
ServerRequest(app, app.requestScheme + APP_URL + "main.php?just_updated", "MainActivity/JU")
|
||||||
.run { e, result ->
|
.run { e, result ->
|
||||||
Handler(Looper.getMainLooper()).post {
|
Handler(Looper.getMainLooper()).post {
|
||||||
@ -420,17 +422,16 @@ class MainActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (app.appConfig.lastAppVersion < 170) {
|
if (app.config.appVersion < 170) {
|
||||||
//Intent intent = new Intent(this, ChangelogIntroActivity.class);
|
//Intent intent = new Intent(this, ChangelogIntroActivity.class);
|
||||||
//startActivity(intent);
|
//startActivity(intent);
|
||||||
} else {
|
} else {
|
||||||
app.appConfig.lastAppVersion = BuildConfig.VERSION_CODE
|
app.config.appVersion = BuildConfig.VERSION_CODE
|
||||||
app.saveConfig("lastAppVersion")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// RATE SNACKBAR
|
// RATE SNACKBAR
|
||||||
if (app.appConfig.appRateSnackbarTime != 0L && app.appConfig.appRateSnackbarTime <= System.currentTimeMillis()) {
|
if (app.config.appRateSnackbarTime != 0L && app.config.appRateSnackbarTime <= System.currentTimeMillis()) {
|
||||||
navView.coordinator.postDelayed({
|
navView.coordinator.postDelayed({
|
||||||
CafeBar.builder(this)
|
CafeBar.builder(this)
|
||||||
.content(R.string.rate_snackbar_text)
|
.content(R.string.rate_snackbar_text)
|
||||||
@ -444,20 +445,17 @@ class MainActivity : AppCompatActivity() {
|
|||||||
.onPositive { cafeBar ->
|
.onPositive { cafeBar ->
|
||||||
Utils.openGooglePlay(this)
|
Utils.openGooglePlay(this)
|
||||||
cafeBar.dismiss()
|
cafeBar.dismiss()
|
||||||
app.appConfig.appRateSnackbarTime = 0
|
app.config.appRateSnackbarTime = 0
|
||||||
app.saveConfig("appRateSnackbarTime")
|
|
||||||
}
|
}
|
||||||
.onNegative { cafeBar ->
|
.onNegative { cafeBar ->
|
||||||
Toast.makeText(this, "Szkoda, opinie innych pomagają mi rozwijać aplikację.", Toast.LENGTH_LONG).show()
|
Toast.makeText(this, "Szkoda, opinie innych pomagają mi rozwijać aplikację.", Toast.LENGTH_LONG).show()
|
||||||
cafeBar.dismiss()
|
cafeBar.dismiss()
|
||||||
app.appConfig.appRateSnackbarTime = 0
|
app.config.appRateSnackbarTime = 0
|
||||||
app.saveConfig("appRateSnackbarTime")
|
|
||||||
}
|
}
|
||||||
.onNeutral { cafeBar ->
|
.onNeutral { cafeBar ->
|
||||||
Toast.makeText(this, "OK", Toast.LENGTH_LONG).show()
|
Toast.makeText(this, "OK", Toast.LENGTH_LONG).show()
|
||||||
cafeBar.dismiss()
|
cafeBar.dismiss()
|
||||||
app.appConfig.appRateSnackbarTime = System.currentTimeMillis() + 7 * 24 * 60 * 60 * 1000
|
app.config.appRateSnackbarTime = System.currentTimeMillis() + 7 * 24 * 60 * 60 * 1000
|
||||||
app.saveConfig("appRateSnackbarTime")
|
|
||||||
}
|
}
|
||||||
.autoDismiss(false)
|
.autoDismiss(false)
|
||||||
.swipeToDismiss(true)
|
.swipeToDismiss(true)
|
||||||
@ -689,14 +687,13 @@ class MainActivity : AppCompatActivity() {
|
|||||||
}*/
|
}*/
|
||||||
|
|
||||||
if (navLoading) {
|
if (navLoading) {
|
||||||
navLoading = false
|
|
||||||
b.fragment.removeAllViews()
|
b.fragment.removeAllViews()
|
||||||
if (intentTargetId == -1)
|
if (intentTargetId == -1)
|
||||||
intentTargetId = HOME_ID
|
intentTargetId = HOME_ID
|
||||||
}
|
}
|
||||||
|
|
||||||
when {
|
when {
|
||||||
app.profile == null -> {
|
app.profile == null || app.profile.id == -1 -> {
|
||||||
if (intentProfileId == -1)
|
if (intentProfileId == -1)
|
||||||
intentProfileId = app.appSharedPrefs.getInt("current_profile_id", 1)
|
intentProfileId = app.appSharedPrefs.getInt("current_profile_id", 1)
|
||||||
loadProfile(intentProfileId, intentTargetId, extras)
|
loadProfile(intentProfileId, intentTargetId, extras)
|
||||||
@ -709,13 +706,14 @@ class MainActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
intentTargetId != -1 -> {
|
intentTargetId != -1 -> {
|
||||||
drawer.currentProfile = app.profile.id
|
drawer.currentProfile = app.profile.id
|
||||||
if (navTargetId != intentTargetId)
|
if (navTargetId != intentTargetId || navLoading)
|
||||||
loadTarget(intentTargetId, extras)
|
loadTarget(intentTargetId, extras)
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
drawer.currentProfile = app.profile.id
|
drawer.currentProfile = app.profile.id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
navLoading = false
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun recreate() {
|
override fun recreate() {
|
||||||
@ -763,7 +761,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (!app.appConfig.loginFinished)
|
if (!app.config.loginFinished)
|
||||||
finish()
|
finish()
|
||||||
else {
|
else {
|
||||||
handleIntent(data?.extras)
|
handleIntent(data?.extras)
|
||||||
@ -800,13 +798,16 @@ class MainActivity : AppCompatActivity() {
|
|||||||
this.runOnUiThread {
|
this.runOnUiThread {
|
||||||
if (app.profile == null) {
|
if (app.profile == null) {
|
||||||
LoginActivity.firstCompleted = false
|
LoginActivity.firstCompleted = false
|
||||||
if (app.appConfig.loginFinished) {
|
if (app.config.loginFinished) {
|
||||||
// this shouldn't run
|
// this shouldn't run
|
||||||
profileListEmptyListener()
|
profileListEmptyListener()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
setDrawerItems()
|
setDrawerItems()
|
||||||
drawer.currentProfile = app.profile.id
|
// the drawer profile is updated automatically when the drawer item is clicked
|
||||||
|
// update it manually when switching profiles from other source
|
||||||
|
//if (drawer.currentProfile != app.profile.id)
|
||||||
|
drawer.currentProfile = app.profile.id
|
||||||
loadTarget(drawerSelection, arguments)
|
loadTarget(drawerSelection, arguments)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -973,7 +974,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
val item = DrawerPrimaryItem()
|
val item = DrawerPrimaryItem()
|
||||||
.withIdentifier(target.id.toLong())
|
.withIdentifier(target.id.toLong())
|
||||||
.withName(target.name)
|
.withName(target.name)
|
||||||
.withHiddenInMiniDrawer(!app.appConfig.miniDrawerButtonIds.contains(target.id))
|
.withHiddenInMiniDrawer(!app.config.ui.miniMenuButtons.contains(target.id))
|
||||||
.also { if (target.description != null) it.withDescription(target.description!!) }
|
.also { if (target.description != null) it.withDescription(target.description!!) }
|
||||||
.also { if (target.icon != null) it.withIcon(target.icon!!) }
|
.also { if (target.icon != null) it.withIcon(target.icon!!) }
|
||||||
.also { if (target.title != null) it.withAppTitle(getString(target.title!!)) }
|
.also { if (target.title != null) it.withAppTitle(getString(target.title!!)) }
|
||||||
@ -1062,30 +1063,11 @@ class MainActivity : AppCompatActivity() {
|
|||||||
private var targetHomeId: Int = -1
|
private var targetHomeId: Int = -1
|
||||||
override fun onBackPressed() {
|
override fun onBackPressed() {
|
||||||
if (!b.navView.onBackPressed()) {
|
if (!b.navView.onBackPressed()) {
|
||||||
|
if (App.getConfig().ui.openDrawerOnBackPressed) {
|
||||||
navigateUp()
|
b.navView.drawer.toggle()
|
||||||
|
|
||||||
/*val currentDestinationId = navController.currentDestination?.id
|
|
||||||
|
|
||||||
if (if (targetHomeId != -1 && targetPopToHomeList.contains(navController.currentDestination?.id)) {
|
|
||||||
if (!navController.popBackStack(targetHomeId, false)) {
|
|
||||||
navController.navigateUp()
|
|
||||||
}
|
|
||||||
true
|
|
||||||
} else {
|
|
||||||
navController.navigateUp()
|
|
||||||
}) {
|
|
||||||
val currentId = navController.currentDestination?.id ?: -1
|
|
||||||
val drawerSelection = navTargetList
|
|
||||||
.singleOrNull {
|
|
||||||
it.navGraphId == currentId
|
|
||||||
}?.also {
|
|
||||||
navView.toolbar.setTitle(it.title ?: it.name)
|
|
||||||
}?.id ?: -1
|
|
||||||
drawer.setSelection(drawerSelection, false)
|
|
||||||
} else {
|
} else {
|
||||||
super.onBackPressed()
|
navigateUp()
|
||||||
}*/
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -93,8 +93,8 @@ public class Notifier {
|
|||||||
|
|
||||||
public boolean shouldBeQuiet() {
|
public boolean shouldBeQuiet() {
|
||||||
long now = Time.getNow().getInMillis();
|
long now = Time.getNow().getInMillis();
|
||||||
long start = app.appConfig.quietHoursStart;
|
long start = app.config.getSync().getQuietHoursStart();
|
||||||
long end = app.appConfig.quietHoursEnd;
|
long end = app.config.getSync().getQuietHoursEnd();
|
||||||
if (start > end) {
|
if (start > end) {
|
||||||
end += 1000 * 60 * 60 * 24;
|
end += 1000 * 60 * 60 * 24;
|
||||||
//Log.d(TAG, "Night passing");
|
//Log.d(TAG, "Night passing");
|
||||||
@ -104,7 +104,7 @@ public class Notifier {
|
|||||||
//Log.d(TAG, "Now is smaller");
|
//Log.d(TAG, "Now is smaller");
|
||||||
}
|
}
|
||||||
//Log.d(TAG, "Start is "+start+", now is "+now+", end is "+end);
|
//Log.d(TAG, "Start is "+start+", now is "+now+", end is "+end);
|
||||||
return app.appConfig.quietHoursStart > 0 && now >= start && now <= end;
|
return start > 0 && now >= start && now <= end;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getNotificationDefaults() {
|
public int getNotificationDefaults() {
|
||||||
@ -312,7 +312,7 @@ public class Notifier {
|
|||||||
| |
|
| |
|
||||||
|*/
|
|*/
|
||||||
public void notificationUpdatesShow(String updateVersion, String updateUrl, String updateFilename, boolean updateDirect) {
|
public void notificationUpdatesShow(String updateVersion, String updateUrl, String updateFilename, boolean updateDirect) {
|
||||||
if (!app.appConfig.notifyAboutUpdates)
|
if (!app.config.getSync().getNotifyAboutUpdates())
|
||||||
return;
|
return;
|
||||||
Intent notificationIntent = new Intent(app.getContext(), BootReceiver.NotificationActionService.class)
|
Intent notificationIntent = new Intent(app.getContext(), BootReceiver.NotificationActionService.class)
|
||||||
.putExtra("update_version", updateVersion)
|
.putExtra("update_version", updateVersion)
|
||||||
@ -340,7 +340,7 @@ public class Notifier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void notificationUpdatesHide() {
|
public void notificationUpdatesHide() {
|
||||||
if (!app.appConfig.notifyAboutUpdates)
|
if (!app.config.getSync().getNotifyAboutUpdates())
|
||||||
return;
|
return;
|
||||||
notificationManager.cancel(ID_UPDATES);
|
notificationManager.cancel(ID_UPDATES);
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ import com.mikepenz.iconics.IconicsDrawable
|
|||||||
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
|
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
|
||||||
import com.mikepenz.iconics.utils.colorInt
|
import com.mikepenz.iconics.utils.colorInt
|
||||||
import com.mikepenz.iconics.utils.sizeDp
|
import com.mikepenz.iconics.utils.sizeDp
|
||||||
import pl.szczodrzynski.edziennik.api.v2.events.task.EdziennikTask
|
import pl.szczodrzynski.edziennik.api.v2.task.EdziennikTask
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_HOMEWORK
|
import pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_HOMEWORK
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.timetable.Lesson
|
import pl.szczodrzynski.edziennik.data.db.modules.timetable.Lesson
|
||||||
import pl.szczodrzynski.edziennik.utils.models.Date
|
import pl.szczodrzynski.edziennik.utils.models.Date
|
||||||
@ -52,9 +52,9 @@ class WidgetTimetable : AppWidgetProvider() {
|
|||||||
val app = context.applicationContext as App
|
val app = context.applicationContext as App
|
||||||
|
|
||||||
var bellSyncDiffMillis: Long = 0
|
var bellSyncDiffMillis: Long = 0
|
||||||
if (app.appConfig.bellSyncDiff != null) {
|
app.config.timetable.bellSyncDiff?.let {
|
||||||
bellSyncDiffMillis = (app.appConfig.bellSyncDiff.hour * 60 * 60 * 1000 + app.appConfig.bellSyncDiff.minute * 60 * 1000 + app.appConfig.bellSyncDiff.second * 1000).toLong()
|
bellSyncDiffMillis = (it.hour * 60 * 60 * 1000 + it.minute * 60 * 1000 + it.second * 1000).toLong()
|
||||||
bellSyncDiffMillis *= app.appConfig.bellSyncMultiplier.toLong()
|
bellSyncDiffMillis *= app.config.timetable.bellSyncMultiplier.toLong()
|
||||||
bellSyncDiffMillis *= -1
|
bellSyncDiffMillis *= -1
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -255,7 +255,7 @@ class WidgetTimetable : AppWidgetProvider() {
|
|||||||
|
|
||||||
// add every event on this lesson
|
// add every event on this lesson
|
||||||
for (event in events) {
|
for (event in events) {
|
||||||
if (event.startTime != null && event.startTime != lesson.displayStartTime)
|
if (event.startTime == null || event.startTime != lesson.displayStartTime)
|
||||||
continue
|
continue
|
||||||
model.eventColors.add(if (event.type == TYPE_HOMEWORK) ItemWidgetTimetableModel.EVENT_COLOR_HOMEWORK else event.getColor())
|
model.eventColors.add(if (event.type == TYPE_HOMEWORK) ItemWidgetTimetableModel.EVENT_COLOR_HOMEWORK else event.getColor())
|
||||||
}
|
}
|
||||||
|
@ -15,12 +15,10 @@ import pl.szczodrzynski.edziennik.App
|
|||||||
import pl.szczodrzynski.edziennik.api.v2.events.*
|
import pl.szczodrzynski.edziennik.api.v2.events.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.events.requests.ServiceCloseRequest
|
import pl.szczodrzynski.edziennik.api.v2.events.requests.ServiceCloseRequest
|
||||||
import pl.szczodrzynski.edziennik.api.v2.events.requests.TaskCancelRequest
|
import pl.szczodrzynski.edziennik.api.v2.events.requests.TaskCancelRequest
|
||||||
import pl.szczodrzynski.edziennik.api.v2.events.task.EdziennikTask
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.events.task.ErrorReportTask
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.events.task.IApiTask
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.events.task.NotifyTask
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikCallback
|
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikCallback
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.task.*
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils.d
|
import pl.szczodrzynski.edziennik.utils.Utils.d
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
@ -40,9 +38,11 @@ class ApiService : Service() {
|
|||||||
|
|
||||||
private val app by lazy { applicationContext as App }
|
private val app by lazy { applicationContext as App }
|
||||||
|
|
||||||
|
private val syncingProfiles = mutableListOf<ProfileFull>()
|
||||||
|
|
||||||
private val finishingTaskQueue = mutableListOf(
|
private val finishingTaskQueue = mutableListOf(
|
||||||
NotifyTask(),
|
SzkolnyTask.sync(syncingProfiles),
|
||||||
ErrorReportTask()
|
NotifyTask()
|
||||||
)
|
)
|
||||||
private val taskQueue = mutableListOf<IApiTask>()
|
private val taskQueue = mutableListOf<IApiTask>()
|
||||||
private val errorList = mutableListOf<ApiError>()
|
private val errorList = mutableListOf<ApiError>()
|
||||||
@ -156,11 +156,14 @@ class ApiService : Service() {
|
|||||||
// post an event
|
// post an event
|
||||||
EventBus.getDefault().post(ApiTaskStartedEvent(taskProfileId, task.profile))
|
EventBus.getDefault().post(ApiTaskStartedEvent(taskProfileId, task.profile))
|
||||||
|
|
||||||
|
task.profile?.let { syncingProfiles.add(it) }
|
||||||
|
|
||||||
try {
|
try {
|
||||||
when (task) {
|
when (task) {
|
||||||
is EdziennikTask -> task.run(app, taskCallback)
|
is EdziennikTask -> task.run(app, taskCallback)
|
||||||
is NotifyTask -> task.run(app, taskCallback)
|
is NotifyTask -> task.run(app, taskCallback)
|
||||||
is ErrorReportTask -> task.run(app, taskCallback, notification, errorList)
|
is ErrorReportTask -> task.run(app, taskCallback, notification, errorList)
|
||||||
|
is SzkolnyTask -> task.run(app, taskCallback)
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
taskCallback.onError(ApiError(TAG, EXCEPTION_API_TASK).withThrowable(e))
|
taskCallback.onError(ApiError(TAG, EXCEPTION_API_TASK).withThrowable(e))
|
||||||
|
@ -168,7 +168,9 @@ const val EXCEPTION_LIBRUS_API_REQUEST = 904
|
|||||||
const val EXCEPTION_LIBRUS_SYNERGIA_REQUEST = 905
|
const val EXCEPTION_LIBRUS_SYNERGIA_REQUEST = 905
|
||||||
const val EXCEPTION_MOBIDZIENNIK_WEB_REQUEST = 906
|
const val EXCEPTION_MOBIDZIENNIK_WEB_REQUEST = 906
|
||||||
const val EXCEPTION_VULCAN_API_REQUEST = 907
|
const val EXCEPTION_VULCAN_API_REQUEST = 907
|
||||||
const val EXCEPTION_NOTIFY_AND_SYNC = 910
|
const val EXCEPTION_MOBIDZIENNIK_WEB_FILE_REQUEST = 908
|
||||||
|
const val EXCEPTION_LIBRUS_MESSAGES_FILE_REQUEST = 909
|
||||||
|
const val EXCEPTION_NOTIFY = 910
|
||||||
const val EXCEPTION_LIBRUS_MESSAGES_REQUEST = 911
|
const val EXCEPTION_LIBRUS_MESSAGES_REQUEST = 911
|
||||||
const val EXCEPTION_IDZIENNIK_WEB_REQUEST = 912
|
const val EXCEPTION_IDZIENNIK_WEB_REQUEST = 912
|
||||||
const val EXCEPTION_IDZIENNIK_WEB_API_REQUEST = 913
|
const val EXCEPTION_IDZIENNIK_WEB_API_REQUEST = 913
|
||||||
|
@ -4,17 +4,17 @@
|
|||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2
|
package pl.szczodrzynski.edziennik.api.v2
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.login.IdziennikLoginApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.login.IdziennikLoginApi
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.login.IdziennikLoginWeb
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.login.IdziennikLoginWeb
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.login.LibrusLoginApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.login.LibrusLoginApi
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.login.LibrusLoginMessages
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.login.LibrusLoginMessages
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.login.LibrusLoginPortal
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.login.LibrusLoginPortal
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.login.LibrusLoginSynergia
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.login.LibrusLoginSynergia
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.login.MobidziennikLoginWeb
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.login.MobidziennikLoginWeb
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.template.login.TemplateLoginApi
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.template.login.TemplateLoginWeb
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.vulcan.login.VulcanLoginApi
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.LoginMethod
|
import pl.szczodrzynski.edziennik.api.v2.models.LoginMethod
|
||||||
import pl.szczodrzynski.edziennik.api.v2.template.login.TemplateLoginApi
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.template.login.TemplateLoginWeb
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.vulcan.login.VulcanLoginApi
|
|
||||||
|
|
||||||
// librus
|
// librus
|
||||||
// mobidziennik
|
// mobidziennik
|
||||||
@ -138,4 +138,4 @@ val templateLoginMethods = listOf(
|
|||||||
LoginMethod(LOGIN_TYPE_TEMPLATE, LOGIN_METHOD_TEMPLATE_API, TemplateLoginApi::class.java)
|
LoginMethod(LOGIN_TYPE_TEMPLATE, LOGIN_METHOD_TEMPLATE_API, TemplateLoginApi::class.java)
|
||||||
.withIsPossible { _, _ -> true }
|
.withIsPossible { _, _ -> true }
|
||||||
.withRequiredLoginMethod { _, _ -> LOGIN_METHOD_TEMPLATE_WEB }
|
.withRequiredLoginMethod { _, _ -> LOGIN_METHOD_TEMPLATE_WEB }
|
||||||
)
|
)
|
||||||
|
@ -24,7 +24,7 @@ object Regexes {
|
|||||||
"""Liczona do średniej:.*?<strong>nie<br/?></strong>""".toRegex(RegexOption.DOT_MATCHES_ALL)
|
"""Liczona do średniej:.*?<strong>nie<br/?></strong>""".toRegex(RegexOption.DOT_MATCHES_ALL)
|
||||||
}
|
}
|
||||||
val MOBIDZIENNIK_GRADES_DETAILS by lazy {
|
val MOBIDZIENNIK_GRADES_DETAILS by lazy {
|
||||||
"""<strong.*?>(.+?)</strong>.*?<sup>.+?</sup>.*?<small>\((.+?)\)</small>.*?<span>.*?Wartość oceny:.*?<strong>([0-9.]+)</strong>.*?Wpisał\(a\):.*?<strong>(.+?)</strong>""".toRegex(RegexOption.DOT_MATCHES_ALL)
|
"""<strong.*?>(.+?)</strong>.*?<sup>.+?</sup>.*?(?:<small>\((.+?)\)</small>.*?)?<span>.*?Wartość oceny:.*?<strong>([0-9.]+)</strong>.*?Wpisał\(a\):.*?<strong>(.+?)</strong>.*?(?:Komentarz:.*?<strong>(.+?)</strong>)?</span>""".toRegex(RegexOption.DOT_MATCHES_ALL)
|
||||||
}
|
}
|
||||||
|
|
||||||
val MOBIDZIENNIK_EVENT_TYPE by lazy {
|
val MOBIDZIENNIK_EVENT_TYPE by lazy {
|
||||||
|
@ -1,179 +0,0 @@
|
|||||||
package pl.szczodrzynski.edziennik.api.v2
|
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.App.APP_URL
|
|
||||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_AGENDA
|
|
||||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_HOMEWORK
|
|
||||||
import pl.szczodrzynski.edziennik.R
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.Data
|
|
||||||
import pl.szczodrzynski.edziennik.data.api.AppError.CODE_APP_SERVER_ERROR
|
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.events.Event
|
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_HOMEWORK
|
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.notification.Notification
|
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.notification.Notification.Companion.TYPE_NEW_SHARED_EVENT
|
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.notification.Notification.Companion.TYPE_NEW_SHARED_HOMEWORK
|
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.notification.Notification.Companion.TYPE_SERVER_MESSAGE
|
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.notification.getNotificationTitle
|
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
|
||||||
import pl.szczodrzynski.edziennik.getJsonArray
|
|
||||||
import pl.szczodrzynski.edziennik.getLong
|
|
||||||
import pl.szczodrzynski.edziennik.getString
|
|
||||||
import pl.szczodrzynski.edziennik.network.ServerRequest
|
|
||||||
|
|
||||||
class ServerSync(val data: Data, val onSuccess: () -> Unit) {
|
|
||||||
companion object {
|
|
||||||
private const val TAG = "ServerSync"
|
|
||||||
}
|
|
||||||
|
|
||||||
val app = data.app
|
|
||||||
val profileId = data.profile?.id ?: -1
|
|
||||||
val profileName = data.profile?.name ?: ""
|
|
||||||
val profile = data.profile
|
|
||||||
val loginStore = data.loginStore
|
|
||||||
|
|
||||||
private fun getUsernameId(): String {
|
|
||||||
if (loginStore.data == null) {
|
|
||||||
return "NO_LOGIN_STORE"
|
|
||||||
}
|
|
||||||
if (profile?.studentData == null) {
|
|
||||||
return "NO_STUDENT_STORE"
|
|
||||||
}
|
|
||||||
return when (data.loginStore.type) {
|
|
||||||
LoginStore.LOGIN_TYPE_MOBIDZIENNIK -> loginStore.getLoginData("serverName", "MOBI_UN") + ":" + loginStore.getLoginData("username", "MOBI_UN") + ":" + profile.getStudentData("studentId", -1)
|
|
||||||
LoginStore.LOGIN_TYPE_LIBRUS -> profile.getStudentData("schoolName", "LIBRUS_UN") + ":" + profile.getStudentData("accountLogin", "LIBRUS_LOGIN_UN")
|
|
||||||
LoginStore.LOGIN_TYPE_IUCZNIOWIE -> loginStore.getLoginData("schoolName", "IUCZNIOWIE_UN") + ":" + loginStore.getLoginData("username", "IUCZNIOWIE_UN") + ":" + profile.getStudentData("registerId", -1)
|
|
||||||
LoginStore.LOGIN_TYPE_VULCAN -> profile.getStudentData("schoolName", "VULCAN_UN") + ":" + profile.getStudentData("studentId", -1)
|
|
||||||
LoginStore.LOGIN_TYPE_DEMO -> loginStore.getLoginData("serverName", "DEMO_UN") + ":" + loginStore.getLoginData("username", "DEMO_UN") + ":" + profile.getStudentData("studentId", -1)
|
|
||||||
else -> "TYPE_UNKNOWN"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
init { run {
|
|
||||||
if (profile?.registration != Profile.REGISTRATION_ENABLED) {
|
|
||||||
onSuccess()
|
|
||||||
return@run
|
|
||||||
}
|
|
||||||
|
|
||||||
val request = ServerRequest(
|
|
||||||
app,
|
|
||||||
app.requestScheme+APP_URL+"main.php?sync",
|
|
||||||
"Edziennik2/REG",
|
|
||||||
profile,
|
|
||||||
data.loginStore.type,
|
|
||||||
getUsernameId()
|
|
||||||
)
|
|
||||||
|
|
||||||
if (profile.empty) {
|
|
||||||
request.setBodyParameter("first_run", "true")
|
|
||||||
}
|
|
||||||
|
|
||||||
var hasNotifications = true
|
|
||||||
if (app.appConfig.webPushEnabled) {
|
|
||||||
data.notifications
|
|
||||||
.filterNot { it.posted }
|
|
||||||
.let {
|
|
||||||
if (it.isEmpty()) {
|
|
||||||
hasNotifications = false
|
|
||||||
null
|
|
||||||
}
|
|
||||||
else
|
|
||||||
it
|
|
||||||
}?.forEachIndexed { index, notification ->
|
|
||||||
if (notification.type != TYPE_NEW_SHARED_EVENT
|
|
||||||
&& notification.type != TYPE_SERVER_MESSAGE
|
|
||||||
&& notification.type != TYPE_NEW_SHARED_HOMEWORK) {
|
|
||||||
request.setBodyParameter("notify[$index][type]", notification.type.toString())
|
|
||||||
request.setBodyParameter("notify[$index][title]", notification.title)
|
|
||||||
request.setBodyParameter("notify[$index][text]", notification.text)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((!app.appConfig.webPushEnabled || !hasNotifications) && !profile.enableSharedEvents) {
|
|
||||||
onSuccess()
|
|
||||||
return@run
|
|
||||||
}
|
|
||||||
|
|
||||||
val result = request.runSync()
|
|
||||||
|
|
||||||
if (result == null) {
|
|
||||||
data.error(ApiError(TAG, CODE_APP_SERVER_ERROR)
|
|
||||||
.setCritical(false))
|
|
||||||
onSuccess()
|
|
||||||
return@run
|
|
||||||
}
|
|
||||||
var apiResponse = result.toString()
|
|
||||||
if (result.getString("success") != "true") {
|
|
||||||
data.error(ApiError(TAG, CODE_APP_SERVER_ERROR)
|
|
||||||
.setCritical(false))
|
|
||||||
onSuccess()
|
|
||||||
return@run
|
|
||||||
}
|
|
||||||
// HERE PROCESS ALL THE RECEIVED EVENTS
|
|
||||||
// add them to the profile and create appropriate notifications
|
|
||||||
result.getJsonArray("events")?.forEach { jEventEl ->
|
|
||||||
val event = jEventEl.asJsonObject
|
|
||||||
val teamCode = event.getString("team")
|
|
||||||
|
|
||||||
// get the target Team from teamCode
|
|
||||||
val team = app.db.teamDao().getByCodeNow(profile.id, teamCode)
|
|
||||||
if (team != null) {
|
|
||||||
|
|
||||||
// create the event from Json. Add the missing teamId and !!profileId!!
|
|
||||||
val eventObject = app.gson.fromJson(event.toString(), Event::class.java)
|
|
||||||
// proguard. disable for Event.class
|
|
||||||
if (eventObject.eventDate == null) {
|
|
||||||
apiResponse += "\n\nEventDate == null\n$event"
|
|
||||||
}
|
|
||||||
eventObject.profileId = profileId
|
|
||||||
eventObject.teamId = team.id
|
|
||||||
eventObject.addedManually = true
|
|
||||||
|
|
||||||
if (eventObject.sharedBy == getUsernameId()) {
|
|
||||||
eventObject.sharedBy = "self"
|
|
||||||
eventObject.sharedByName = profile.studentNameLong
|
|
||||||
}
|
|
||||||
|
|
||||||
val typeObject = app.db.eventTypeDao().getByIdNow(profileId, eventObject.type)
|
|
||||||
|
|
||||||
app.db.eventDao().add(eventObject)
|
|
||||||
|
|
||||||
val metadata = Metadata(
|
|
||||||
profileId,
|
|
||||||
if (eventObject.type == TYPE_HOMEWORK) Metadata.TYPE_HOMEWORK else Metadata.TYPE_EVENT,
|
|
||||||
eventObject.id,
|
|
||||||
profile.empty,
|
|
||||||
true,
|
|
||||||
event.getLong("addedDate") ?: 0
|
|
||||||
)
|
|
||||||
|
|
||||||
val metadataId = app.db.metadataDao().add(metadata)
|
|
||||||
|
|
||||||
// notify if the event is new and not first sync
|
|
||||||
if (metadataId != -1L && !profile.empty) {
|
|
||||||
val text = app.getString(
|
|
||||||
R.string.notification_shared_event_format,
|
|
||||||
eventObject.sharedByName,
|
|
||||||
if (typeObject != null) typeObject.name else "wydarzenie",
|
|
||||||
if (eventObject.eventDate == null) "???" else eventObject.eventDate.formattedString,
|
|
||||||
eventObject.topic
|
|
||||||
)
|
|
||||||
val type = if (eventObject.type == TYPE_HOMEWORK) TYPE_NEW_SHARED_HOMEWORK else TYPE_NEW_SHARED_EVENT
|
|
||||||
data.notifications += Notification(
|
|
||||||
title = app.getNotificationTitle(type),
|
|
||||||
text = text,
|
|
||||||
type = type,
|
|
||||||
profileId = profileId,
|
|
||||||
profileName = profileName,
|
|
||||||
viewId = if (eventObject.type == TYPE_HOMEWORK) DRAWER_ITEM_HOMEWORK else DRAWER_ITEM_AGENDA,
|
|
||||||
addedDate = metadata.addedDate
|
|
||||||
).addExtra("eventId", eventObject.id).addExtra("eventDate", eventObject.eventDate.value.toLong())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
onSuccess()
|
|
||||||
}}
|
|
||||||
}
|
|
@ -2,7 +2,7 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-25.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-25.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik
|
||||||
|
|
||||||
import androidx.core.util.set
|
import androidx.core.util.set
|
||||||
import okhttp3.Cookie
|
import okhttp3.Cookie
|
@ -2,20 +2,21 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-25.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-25.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik
|
||||||
|
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import pl.szczodrzynski.edziennik.App
|
import pl.szczodrzynski.edziennik.App
|
||||||
import pl.szczodrzynski.edziennik.api.v2.CODE_INTERNAL_LIBRUS_ACCOUNT_410
|
import pl.szczodrzynski.edziennik.api.v2.CODE_INTERNAL_LIBRUS_ACCOUNT_410
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.data.IdziennikData
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.IdziennikData
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.firstlogin.IdziennikFirstLogin
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.firstlogin.IdziennikFirstLogin
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.login.IdziennikLogin
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.login.IdziennikLogin
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennikLoginMethods
|
import pl.szczodrzynski.edziennik.api.v2.idziennikLoginMethods
|
||||||
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikCallback
|
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikCallback
|
||||||
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikInterface
|
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikInterface
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.api.v2.prepare
|
import pl.szczodrzynski.edziennik.api.v2.prepare
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils.d
|
import pl.szczodrzynski.edziennik.utils.Utils.d
|
||||||
@ -37,7 +38,7 @@ class Idziennik(val app: App, val profile: Profile?, val loginStore: LoginStore,
|
|||||||
|
|
||||||
private fun completed() {
|
private fun completed() {
|
||||||
data.saveData()
|
data.saveData()
|
||||||
data.notifyAndSyncEvents {
|
data.notify {
|
||||||
callback.onCompleted()
|
callback.onCompleted()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -70,7 +71,7 @@ class Idziennik(val app: App, val profile: Profile?, val loginStore: LoginStore,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getAttachment(messageId: Long, attachmentId: Long, attachmentName: String) {
|
override fun getAttachment(message: Message, attachmentId: Long, attachmentName: String) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -2,7 +2,7 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-25.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-25.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.Feature
|
import pl.szczodrzynski.edziennik.api.v2.models.Feature
|
@ -2,7 +2,7 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-29.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-29.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik.data
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data
|
||||||
|
|
||||||
import com.google.gson.JsonArray
|
import com.google.gson.JsonArray
|
||||||
import com.google.gson.JsonElement
|
import com.google.gson.JsonElement
|
||||||
@ -12,7 +12,7 @@ import im.wangchao.mhttp.Request
|
|||||||
import im.wangchao.mhttp.Response
|
import im.wangchao.mhttp.Response
|
||||||
import im.wangchao.mhttp.callback.TextCallbackHandler
|
import im.wangchao.mhttp.callback.TextCallbackHandler
|
||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.DataIdziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.DataIdziennik
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.getString
|
import pl.szczodrzynski.edziennik.getString
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils
|
import pl.szczodrzynski.edziennik.utils.Utils
|
@ -2,14 +2,14 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-25.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-25.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik.data
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.R
|
import pl.szczodrzynski.edziennik.R
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.*
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.data.api.IdziennikApiCurrentRegister
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.api.IdziennikApiCurrentRegister
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.data.api.IdziennikApiMessagesInbox
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.api.IdziennikApiMessagesInbox
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.data.api.IdziennikApiMessagesSent
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.api.IdziennikApiMessagesSent
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.data.web.*
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.web.*
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils
|
import pl.szczodrzynski.edziennik.utils.Utils
|
||||||
|
|
||||||
class IdziennikData(val data: DataIdziennik, val onSuccess: () -> Unit) {
|
class IdziennikData(val data: DataIdziennik, val onSuccess: () -> Unit) {
|
@ -2,7 +2,7 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-25.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-25.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik.data
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data
|
||||||
|
|
||||||
import com.google.gson.JsonArray
|
import com.google.gson.JsonArray
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
@ -11,7 +11,7 @@ import im.wangchao.mhttp.Response
|
|||||||
import im.wangchao.mhttp.callback.JsonCallbackHandler
|
import im.wangchao.mhttp.callback.JsonCallbackHandler
|
||||||
import im.wangchao.mhttp.callback.TextCallbackHandler
|
import im.wangchao.mhttp.callback.TextCallbackHandler
|
||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.DataIdziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.DataIdziennik
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils.d
|
import pl.szczodrzynski.edziennik.utils.Utils.d
|
||||||
import java.net.HttpURLConnection.HTTP_INTERNAL_ERROR
|
import java.net.HttpURLConnection.HTTP_INTERNAL_ERROR
|
@ -2,14 +2,14 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-29.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-29.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.api
|
||||||
|
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import pl.szczodrzynski.edziennik.DAY
|
import pl.szczodrzynski.edziennik.DAY
|
||||||
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_API_CURRENT_REGISTER
|
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_API_CURRENT_REGISTER
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.DataIdziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.DataIdziennik
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.ENDPOINT_IDZIENNIK_API_CURRENT_REGISTER
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.ENDPOINT_IDZIENNIK_API_CURRENT_REGISTER
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.data.IdziennikApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.IdziennikApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.luckynumber.LuckyNumber
|
import pl.szczodrzynski.edziennik.data.db.modules.luckynumber.LuckyNumber
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
||||||
import pl.szczodrzynski.edziennik.getInt
|
import pl.szczodrzynski.edziennik.getInt
|
@ -2,13 +2,13 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-30.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-30.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.api
|
||||||
|
|
||||||
import com.google.gson.JsonArray
|
import com.google.gson.JsonArray
|
||||||
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_API_MESSAGES_INBOX
|
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_API_MESSAGES_INBOX
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.DataIdziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.DataIdziennik
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.ENDPOINT_IDZIENNIK_API_MESSAGES_INBOX
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.ENDPOINT_IDZIENNIK_API_MESSAGES_INBOX
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.data.IdziennikApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.IdziennikApi
|
||||||
import pl.szczodrzynski.edziennik.asJsonObjectList
|
import pl.szczodrzynski.edziennik.asJsonObjectList
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message
|
@ -2,15 +2,15 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-30.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-30.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.api
|
||||||
|
|
||||||
import com.google.gson.JsonArray
|
import com.google.gson.JsonArray
|
||||||
import pl.szczodrzynski.edziennik.DAY
|
import pl.szczodrzynski.edziennik.DAY
|
||||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_MESSAGES
|
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_MESSAGES
|
||||||
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_API_MESSAGES_SENT
|
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_API_MESSAGES_SENT
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.DataIdziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.DataIdziennik
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.ENDPOINT_IDZIENNIK_API_MESSAGES_SENT
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.ENDPOINT_IDZIENNIK_API_MESSAGES_SENT
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.data.IdziennikApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.IdziennikApi
|
||||||
import pl.szczodrzynski.edziennik.asJsonObjectList
|
import pl.szczodrzynski.edziennik.asJsonObjectList
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_SENT
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_SENT
|
@ -2,15 +2,15 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-28.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-28.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik.data.web
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.web
|
||||||
|
|
||||||
import com.google.gson.JsonArray
|
import com.google.gson.JsonArray
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import pl.szczodrzynski.edziennik.api.v2.ERROR_IDZIENNIK_WEB_REQUEST_NO_DATA
|
import pl.szczodrzynski.edziennik.api.v2.ERROR_IDZIENNIK_WEB_REQUEST_NO_DATA
|
||||||
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_WEB_ANNOUNCEMENTS
|
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_WEB_ANNOUNCEMENTS
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.DataIdziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.DataIdziennik
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.ENDPOINT_IDZIENNIK_WEB_ANNOUNCEMENTS
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.ENDPOINT_IDZIENNIK_WEB_ANNOUNCEMENTS
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.data.IdziennikWeb
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.IdziennikWeb
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.announcements.Announcement
|
import pl.szczodrzynski.edziennik.data.db.modules.announcements.Announcement
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
@ -2,13 +2,13 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-28.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-28.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik.data.web
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.web
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.ERROR_IDZIENNIK_WEB_REQUEST_NO_DATA
|
import pl.szczodrzynski.edziennik.api.v2.ERROR_IDZIENNIK_WEB_REQUEST_NO_DATA
|
||||||
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_WEB_ATTENDANCE
|
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_WEB_ATTENDANCE
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.DataIdziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.DataIdziennik
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.ENDPOINT_IDZIENNIK_WEB_ATTENDANCE
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.ENDPOINT_IDZIENNIK_WEB_ATTENDANCE
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.data.IdziennikWeb
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.IdziennikWeb
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.crc16
|
import pl.szczodrzynski.edziennik.crc16
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
@ -2,15 +2,15 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-28.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-28.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik.data.web
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.web
|
||||||
|
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.ERROR_IDZIENNIK_WEB_REQUEST_NO_DATA
|
import pl.szczodrzynski.edziennik.api.v2.ERROR_IDZIENNIK_WEB_REQUEST_NO_DATA
|
||||||
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_WEB_EXAMS
|
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_WEB_EXAMS
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.DataIdziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.DataIdziennik
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.ENDPOINT_IDZIENNIK_WEB_EXAMS
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.ENDPOINT_IDZIENNIK_WEB_EXAMS
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.data.IdziennikWeb
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.IdziennikWeb
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.DataRemoveModel
|
import pl.szczodrzynski.edziennik.api.v2.models.DataRemoveModel
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
@ -59,13 +59,14 @@ class IdziennikWebExams(override val data: DataIdziennik,
|
|||||||
json.getJsonArray("ListK")?.asJsonObjectList()?.forEach { exam ->
|
json.getJsonArray("ListK")?.asJsonObjectList()?.forEach { exam ->
|
||||||
val id = exam.getLong("_recordId") ?: return@forEach
|
val id = exam.getLong("_recordId") ?: return@forEach
|
||||||
val examDate = Date.fromY_m_d(exam.getString("data") ?: return@forEach)
|
val examDate = Date.fromY_m_d(exam.getString("data") ?: return@forEach)
|
||||||
val subjectId = data.getSubject(exam.getString("przedmiot") ?: return@forEach,
|
val subjectName = exam.getString("przedmiot") ?: return@forEach
|
||||||
-1, "").id
|
val subjectId = data.getSubject(subjectName, null, subjectName).id
|
||||||
val teacherId = data.getTeacherByLastFirst(exam.getString("wpisal")
|
val teacherName = exam.getString("wpisal") ?: return@forEach
|
||||||
?: return@forEach).id
|
val teacherId = data.getTeacherByLastFirst(teacherName).id
|
||||||
|
val topic = exam.getString("zakres") ?: ""
|
||||||
|
|
||||||
val lessonList = data.db.timetableDao().getForDateNow(profileId, examDate)
|
val lessonList = data.db.timetableDao().getForDateNow(profileId, examDate)
|
||||||
val startTime = lessonList.firstOrNull { it.subjectId == subjectId }?.startTime
|
val startTime = lessonList.firstOrNull { it.subjectId == subjectId }?.startTime
|
||||||
val topic = exam.getString("zakres") ?: ""
|
|
||||||
|
|
||||||
val eventType = when (exam.getString("rodzaj")) {
|
val eventType = when (exam.getString("rodzaj")) {
|
||||||
"sprawdzian/praca klasowa" -> Event.TYPE_EXAM
|
"sprawdzian/praca klasowa" -> Event.TYPE_EXAM
|
@ -2,15 +2,15 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-28.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-28.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik.data.web
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.web
|
||||||
|
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.ERROR_IDZIENNIK_WEB_REQUEST_NO_DATA
|
import pl.szczodrzynski.edziennik.api.v2.ERROR_IDZIENNIK_WEB_REQUEST_NO_DATA
|
||||||
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_WEB_GRADES
|
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_WEB_GRADES
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.DataIdziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.DataIdziennik
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.ENDPOINT_IDZIENNIK_WEB_GRADES
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.ENDPOINT_IDZIENNIK_WEB_GRADES
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.data.IdziennikWeb
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.IdziennikWeb
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade
|
@ -2,15 +2,15 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-11-25
|
* Copyright (c) Kacper Ziubryniewicz 2019-11-25
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik.data.web
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.web
|
||||||
|
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.ERROR_IDZIENNIK_WEB_REQUEST_NO_DATA
|
import pl.szczodrzynski.edziennik.api.v2.ERROR_IDZIENNIK_WEB_REQUEST_NO_DATA
|
||||||
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_WEB_HOMEWORK
|
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_WEB_HOMEWORK
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.DataIdziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.DataIdziennik
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.ENDPOINT_IDZIENNIK_WEB_HOMEWORK
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.ENDPOINT_IDZIENNIK_WEB_HOMEWORK
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.data.IdziennikWeb
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.IdziennikWeb
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.DataRemoveModel
|
import pl.szczodrzynski.edziennik.api.v2.models.DataRemoveModel
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
@ -50,10 +50,10 @@ class IdziennikWebHomework(override val data: DataIdziennik,
|
|||||||
json.getJsonArray("ListK")?.asJsonObjectList()?.forEach { homework ->
|
json.getJsonArray("ListK")?.asJsonObjectList()?.forEach { homework ->
|
||||||
val id = homework.getLong("_recordId") ?: return@forEach
|
val id = homework.getLong("_recordId") ?: return@forEach
|
||||||
val eventDate = Date.fromY_m_d(homework.getString("dataO") ?: return@forEach)
|
val eventDate = Date.fromY_m_d(homework.getString("dataO") ?: return@forEach)
|
||||||
val subjectId = data.getSubject(homework.getString("przed") ?: return@forEach,
|
val subjectName = homework.getString("przed") ?: return@forEach
|
||||||
-1, "").id
|
val subjectId = data.getSubject(subjectName, null, subjectName).id
|
||||||
val teacherId = data.getTeacherByLastFirst(homework.getString("usr")
|
val teacherName = homework.getString("usr") ?: return@forEach
|
||||||
?: return@forEach).id
|
val teacherId = data.getTeacherByLastFirst(teacherName).id
|
||||||
val lessonList = data.db.timetableDao().getForDateNow(profileId, eventDate)
|
val lessonList = data.db.timetableDao().getForDateNow(profileId, eventDate)
|
||||||
val startTime = lessonList.firstOrNull { it.subjectId == subjectId }?.displayStartTime
|
val startTime = lessonList.firstOrNull { it.subjectId == subjectId }?.displayStartTime
|
||||||
val topic = homework.getString("tytul") ?: ""
|
val topic = homework.getString("tytul") ?: ""
|
@ -2,13 +2,13 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-28.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-28.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik.data.web
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.web
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.ERROR_IDZIENNIK_WEB_REQUEST_NO_DATA
|
import pl.szczodrzynski.edziennik.api.v2.ERROR_IDZIENNIK_WEB_REQUEST_NO_DATA
|
||||||
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_WEB_NOTICES
|
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_WEB_NOTICES
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.DataIdziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.DataIdziennik
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.ENDPOINT_IDZIENNIK_WEB_NOTICES
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.ENDPOINT_IDZIENNIK_WEB_NOTICES
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.data.IdziennikWeb
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.IdziennikWeb
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.crc16
|
import pl.szczodrzynski.edziennik.crc16
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
@ -2,29 +2,32 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-28.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-28.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik.data.web
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.web
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.ERROR_IDZIENNIK_WEB_REQUEST_NO_DATA
|
import pl.szczodrzynski.edziennik.api.v2.ERROR_IDZIENNIK_WEB_REQUEST_NO_DATA
|
||||||
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_WEB_MISSING_GRADES
|
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_WEB_MISSING_GRADES
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.DataIdziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.DataIdziennik
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.ENDPOINT_IDZIENNIK_WEB_PROPOSED_GRADES
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.ENDPOINT_IDZIENNIK_WEB_PROPOSED_GRADES
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.data.IdziennikWeb
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.IdziennikWeb
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
|
import pl.szczodrzynski.edziennik.asJsonObjectList
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_PROPOSED
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_PROPOSED
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_PROPOSED
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_PROPOSED
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
||||||
|
import pl.szczodrzynski.edziennik.getJsonArray
|
||||||
import pl.szczodrzynski.edziennik.getJsonObject
|
import pl.szczodrzynski.edziennik.getJsonObject
|
||||||
|
import pl.szczodrzynski.edziennik.getString
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils.getWordGradeValue
|
import pl.szczodrzynski.edziennik.utils.Utils.getWordGradeValue
|
||||||
|
|
||||||
class IdziennikWebProposedGrades(override val data: DataIdziennik,
|
class IdziennikWebProposedGrades(override val data: DataIdziennik,
|
||||||
val onSuccess: () -> Unit) : IdziennikWeb(data) {
|
val onSuccess: () -> Unit) : IdziennikWeb(data) {
|
||||||
companion object {
|
companion object {
|
||||||
private const val TAG = "IdziennikWebProposedGrades"
|
private const val TAG = "IdziennikWebProposedGrades"
|
||||||
}
|
}
|
||||||
|
|
||||||
init {
|
init { data.profile?.also { profile ->
|
||||||
webApiGet(TAG, IDZIENNIK_WEB_MISSING_GRADES, mapOf(
|
webApiGet(TAG, IDZIENNIK_WEB_MISSING_GRADES, mapOf(
|
||||||
"idPozDziennika" to data.registerId
|
"idPozDziennika" to data.registerId
|
||||||
)) { result ->
|
)) { result ->
|
||||||
@ -34,17 +37,17 @@ class IdziennikWebProposedGrades(override val data: DataIdziennik,
|
|||||||
return@webApiGet
|
return@webApiGet
|
||||||
}
|
}
|
||||||
|
|
||||||
val jSubjects = json.getAsJsonArray("Przedmioty")
|
json.getJsonArray("Przedmioty")?.asJsonObjectList()?.forEach { subject ->
|
||||||
for (jSubjectEl in jSubjects) {
|
val subjectName = subject.getString("Przedmiot") ?: return@forEach
|
||||||
val jSubject = jSubjectEl.getAsJsonObject()
|
val subjectObject = data.getSubject(subjectName, null, subjectName)
|
||||||
// jSubject
|
|
||||||
val rSubject = data.getSubject(jSubject.get("Przedmiot").getAsString(), -1, jSubject.get("Przedmiot").getAsString())
|
val semester1Proposed = subject.getString("OcenaSem1") ?: ""
|
||||||
val semester1Proposed = jSubject.get("OcenaSem1").getAsString()
|
|
||||||
val semester2Proposed = jSubject.get("OcenaSem2").getAsString()
|
|
||||||
val semester1Value = getWordGradeValue(semester1Proposed)
|
val semester1Value = getWordGradeValue(semester1Proposed)
|
||||||
|
val semester1Id = subjectObject.id * (-100) - 1
|
||||||
|
|
||||||
|
val semester2Proposed = subject.getString("OcenaSem2") ?: ""
|
||||||
val semester2Value = getWordGradeValue(semester2Proposed)
|
val semester2Value = getWordGradeValue(semester2Proposed)
|
||||||
val semester1Id = rSubject.id * -100 - 1
|
val semester2Id = subjectObject.id * (-100) - 2
|
||||||
val semester2Id = rSubject.id * -100 - 2
|
|
||||||
|
|
||||||
if (semester1Proposed != "") {
|
if (semester1Proposed != "") {
|
||||||
val gradeObject = Grade(
|
val gradeObject = Grade(
|
||||||
@ -58,17 +61,18 @@ class IdziennikWebProposedGrades(override val data: DataIdziennik,
|
|||||||
0f,
|
0f,
|
||||||
1,
|
1,
|
||||||
-1,
|
-1,
|
||||||
rSubject.id)
|
subjectObject.id
|
||||||
|
).apply {
|
||||||
gradeObject.type = TYPE_SEMESTER1_PROPOSED
|
type = TYPE_SEMESTER1_PROPOSED
|
||||||
|
}
|
||||||
|
|
||||||
data.gradeList.add(gradeObject)
|
data.gradeList.add(gradeObject)
|
||||||
data.metadataList.add(Metadata(
|
data.metadataList.add(Metadata(
|
||||||
profileId,
|
profileId,
|
||||||
Metadata.TYPE_GRADE,
|
Metadata.TYPE_GRADE,
|
||||||
gradeObject.id,
|
gradeObject.id,
|
||||||
profile?.empty ?: false,
|
profile.empty,
|
||||||
profile?.empty ?: false,
|
profile.empty,
|
||||||
System.currentTimeMillis()
|
System.currentTimeMillis()
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
@ -85,17 +89,18 @@ class IdziennikWebProposedGrades(override val data: DataIdziennik,
|
|||||||
0f,
|
0f,
|
||||||
2,
|
2,
|
||||||
-1,
|
-1,
|
||||||
rSubject.id)
|
subjectObject.id
|
||||||
|
).apply {
|
||||||
gradeObject.type = TYPE_YEAR_PROPOSED
|
type = TYPE_YEAR_PROPOSED
|
||||||
|
}
|
||||||
|
|
||||||
data.gradeList.add(gradeObject)
|
data.gradeList.add(gradeObject)
|
||||||
data.metadataList.add(Metadata(
|
data.metadataList.add(Metadata(
|
||||||
profileId,
|
profileId,
|
||||||
Metadata.TYPE_GRADE,
|
Metadata.TYPE_GRADE,
|
||||||
gradeObject.id,
|
gradeObject.id,
|
||||||
profile?.empty ?: false,
|
profile.empty,
|
||||||
profile?.empty ?: false,
|
profile.empty,
|
||||||
System.currentTimeMillis()
|
System.currentTimeMillis()
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
@ -104,5 +109,5 @@ class IdziennikWebProposedGrades(override val data: DataIdziennik,
|
|||||||
data.setSyncNext(ENDPOINT_IDZIENNIK_WEB_PROPOSED_GRADES, SYNC_ALWAYS)
|
data.setSyncNext(ENDPOINT_IDZIENNIK_WEB_PROPOSED_GRADES, SYNC_ALWAYS)
|
||||||
onSuccess()
|
onSuccess()
|
||||||
}
|
}
|
||||||
}
|
}}
|
||||||
}
|
}
|
@ -2,15 +2,15 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-11-22
|
* Copyright (c) Kacper Ziubryniewicz 2019-11-22
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik.data.web
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.web
|
||||||
|
|
||||||
import androidx.core.util.set
|
import androidx.core.util.set
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.ERROR_IDZIENNIK_WEB_REQUEST_NO_DATA
|
import pl.szczodrzynski.edziennik.api.v2.ERROR_IDZIENNIK_WEB_REQUEST_NO_DATA
|
||||||
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_WEB_TIMETABLE
|
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_WEB_TIMETABLE
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.DataIdziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.DataIdziennik
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.ENDPOINT_IDZIENNIK_WEB_TIMETABLE
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.ENDPOINT_IDZIENNIK_WEB_TIMETABLE
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.data.IdziennikWeb
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.IdziennikWeb
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.DataRemoveModel
|
import pl.szczodrzynski.edziennik.api.v2.models.DataRemoveModel
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
@ -2,16 +2,16 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-27.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-27.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik.firstlogin
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.firstlogin
|
||||||
|
|
||||||
import org.greenrobot.eventbus.EventBus
|
import org.greenrobot.eventbus.EventBus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.ERROR_LOGIN_IDZIENNIK_FIRST_NO_SCHOOL_YEAR
|
import pl.szczodrzynski.edziennik.api.v2.ERROR_LOGIN_IDZIENNIK_FIRST_NO_SCHOOL_YEAR
|
||||||
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_WEB_SETTINGS
|
import pl.szczodrzynski.edziennik.api.v2.IDZIENNIK_WEB_SETTINGS
|
||||||
import pl.szczodrzynski.edziennik.api.v2.Regexes
|
import pl.szczodrzynski.edziennik.api.v2.Regexes
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.DataIdziennik
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.data.IdziennikWeb
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.login.IdziennikLoginWeb
|
||||||
import pl.szczodrzynski.edziennik.api.v2.events.FirstLoginFinishedEvent
|
import pl.szczodrzynski.edziennik.api.v2.events.FirstLoginFinishedEvent
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.DataIdziennik
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.data.IdziennikWeb
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.login.IdziennikLoginWeb
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||||
import pl.szczodrzynski.edziennik.fixName
|
import pl.szczodrzynski.edziennik.fixName
|
@ -2,12 +2,12 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-25.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-25.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik.login
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.login
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.R
|
import pl.szczodrzynski.edziennik.R
|
||||||
import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_IDZIENNIK_API
|
import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_IDZIENNIK_API
|
||||||
import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_IDZIENNIK_WEB
|
import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_IDZIENNIK_WEB
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.DataIdziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.DataIdziennik
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils
|
import pl.szczodrzynski.edziennik.utils.Utils
|
||||||
|
|
||||||
class IdziennikLogin(val data: DataIdziennik, val onSuccess: () -> Unit) {
|
class IdziennikLogin(val data: DataIdziennik, val onSuccess: () -> Unit) {
|
@ -2,9 +2,9 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-27.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-27.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik.login
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.login
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.DataIdziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.DataIdziennik
|
||||||
|
|
||||||
class IdziennikLoginApi(val data: DataIdziennik, val onSuccess: () -> Unit) {
|
class IdziennikLoginApi(val data: DataIdziennik, val onSuccess: () -> Unit) {
|
||||||
companion object {
|
companion object {
|
@ -2,7 +2,7 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-26.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-26.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.idziennik.login
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.login
|
||||||
|
|
||||||
import im.wangchao.mhttp.Request
|
import im.wangchao.mhttp.Request
|
||||||
import im.wangchao.mhttp.Response
|
import im.wangchao.mhttp.Response
|
||||||
@ -11,7 +11,7 @@ import okhttp3.Cookie
|
|||||||
import pl.szczodrzynski.edziennik.HOUR
|
import pl.szczodrzynski.edziennik.HOUR
|
||||||
import pl.szczodrzynski.edziennik.MINUTE
|
import pl.szczodrzynski.edziennik.MINUTE
|
||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.idziennik.DataIdziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.idziennik.DataIdziennik
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.get
|
import pl.szczodrzynski.edziennik.get
|
||||||
import pl.szczodrzynski.edziennik.getUnixDate
|
import pl.szczodrzynski.edziennik.getUnixDate
|
@ -2,7 +2,7 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-9-21.
|
* Copyright (c) Kuba Szczodrzyński 2019-9-21.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus
|
||||||
|
|
||||||
import okhttp3.Cookie
|
import okhttp3.Cookie
|
||||||
import pl.szczodrzynski.edziennik.App
|
import pl.szczodrzynski.edziennik.App
|
||||||
@ -148,16 +148,16 @@ class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
*/
|
*/
|
||||||
private var mApiCode: String? = null
|
private var mApiCode: String? = null
|
||||||
var apiCode: String?
|
var apiCode: String?
|
||||||
get() { mApiCode = mApiCode ?: profile?.getStudentData("accountCode", null); return mApiCode }
|
get() { mApiCode = mApiCode ?: loginStore.getLoginData("accountCode", null); return mApiCode }
|
||||||
set(value) { profile?.putStudentData("accountCode", value) ?: return; mApiCode = value }
|
set(value) { loginStore.putLoginData("accountCode", value) ?: return; mApiCode = value }
|
||||||
/**
|
/**
|
||||||
* A JST login PIN.
|
* A JST login PIN.
|
||||||
* Used only during first login in JST mode.
|
* Used only during first login in JST mode.
|
||||||
*/
|
*/
|
||||||
private var mApiPin: String? = null
|
private var mApiPin: String? = null
|
||||||
var apiPin: String?
|
var apiPin: String?
|
||||||
get() { mApiPin = mApiPin ?: profile?.getStudentData("accountPin", null); return mApiPin }
|
get() { mApiPin = mApiPin ?: loginStore.getLoginData("accountPin", null); return mApiPin }
|
||||||
set(value) { profile?.putStudentData("accountPin", value) ?: return; mApiPin = value }
|
set(value) { loginStore.putLoginData("accountPin", value) ?: return; mApiPin = value }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A Synergia API access token.
|
* A Synergia API access token.
|
||||||
@ -168,7 +168,7 @@ class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mApiAccessToken: String? = null
|
private var mApiAccessToken: String? = null
|
||||||
var apiAccessToken: String?
|
var apiAccessToken: String?
|
||||||
get() { mApiAccessToken = mApiAccessToken ?: profile?.getStudentData("accountToken", null); return mApiAccessToken }
|
get() { mApiAccessToken = mApiAccessToken ?: profile?.getStudentData("accountToken", null); return mApiAccessToken }
|
||||||
set(value) { profile?.putStudentData("accountToken", value) ?: return; mApiAccessToken = value }
|
set(value) { mApiAccessToken = value; profile?.putStudentData("accountToken", value) ?: return; }
|
||||||
/**
|
/**
|
||||||
* A Synergia API refresh token.
|
* A Synergia API refresh token.
|
||||||
* Used when refreshing the [apiAccessToken] in JST, Synergia modes.
|
* Used when refreshing the [apiAccessToken] in JST, Synergia modes.
|
||||||
@ -176,7 +176,7 @@ class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mApiRefreshToken: String? = null
|
private var mApiRefreshToken: String? = null
|
||||||
var apiRefreshToken: String?
|
var apiRefreshToken: String?
|
||||||
get() { mApiRefreshToken = mApiRefreshToken ?: profile?.getStudentData("accountRefreshToken", null); return mApiRefreshToken }
|
get() { mApiRefreshToken = mApiRefreshToken ?: profile?.getStudentData("accountRefreshToken", null); return mApiRefreshToken }
|
||||||
set(value) { profile?.putStudentData("accountRefreshToken", value) ?: return; mApiRefreshToken = value }
|
set(value) { mApiRefreshToken = value; profile?.putStudentData("accountRefreshToken", value) ?: return; }
|
||||||
/**
|
/**
|
||||||
* The expiry time for [apiAccessToken], as a UNIX timestamp.
|
* The expiry time for [apiAccessToken], as a UNIX timestamp.
|
||||||
* Used when refreshing the [apiAccessToken] in JST, Synergia modes.
|
* Used when refreshing the [apiAccessToken] in JST, Synergia modes.
|
||||||
@ -185,7 +185,7 @@ class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mApiTokenExpiryTime: Long? = null
|
private var mApiTokenExpiryTime: Long? = null
|
||||||
var apiTokenExpiryTime: Long
|
var apiTokenExpiryTime: Long
|
||||||
get() { mApiTokenExpiryTime = mApiTokenExpiryTime ?: profile?.getStudentData("accountTokenTime", 0L); return mApiTokenExpiryTime ?: 0L }
|
get() { mApiTokenExpiryTime = mApiTokenExpiryTime ?: profile?.getStudentData("accountTokenTime", 0L); return mApiTokenExpiryTime ?: 0L }
|
||||||
set(value) { profile?.putStudentData("accountTokenTime", value) ?: return; mApiTokenExpiryTime = value }
|
set(value) { mApiTokenExpiryTime = value; profile?.putStudentData("accountTokenTime", value) ?: return; }
|
||||||
|
|
||||||
/* _____ _
|
/* _____ _
|
||||||
/ ____| (_)
|
/ ____| (_)
|
||||||
@ -269,4 +269,4 @@ class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
var enableDescriptiveGrades: Boolean
|
var enableDescriptiveGrades: Boolean
|
||||||
get() { mEnableDescriptiveGrades = mEnableDescriptiveGrades ?: profile?.getStudentData("enableDescriptiveGrades", true); return mEnableDescriptiveGrades ?: true }
|
get() { mEnableDescriptiveGrades = mEnableDescriptiveGrades ?: profile?.getStudentData("enableDescriptiveGrades", true); return mEnableDescriptiveGrades ?: true }
|
||||||
set(value) { profile?.putStudentData("enableDescriptiveGrades", value) ?: return; mEnableDescriptiveGrades = value }
|
set(value) { profile?.putStudentData("enableDescriptiveGrades", value) ?: return; mEnableDescriptiveGrades = value }
|
||||||
}
|
}
|
@ -2,21 +2,22 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-9-21.
|
* Copyright (c) Kuba Szczodrzyński 2019-9-21.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus
|
||||||
|
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import pl.szczodrzynski.edziennik.App
|
import pl.szczodrzynski.edziennik.App
|
||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusData
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.messages.LibrusMessagesGetAttachment
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.messages.LibrusMessagesGetMessage
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.synergia.LibrusSynergiaMarkAllAnnouncementsAsRead
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.firstlogin.LibrusFirstLogin
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.login.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikCallback
|
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikCallback
|
||||||
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikInterface
|
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikInterface
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusData
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.messages.LibrusMessagesGetAttachment
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.messages.LibrusMessagesGetMessage
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.synergia.LibrusSynergiaMarkAllAnnouncementsAsRead
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.firstlogin.LibrusFirstLogin
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.login.*
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils.d
|
import pl.szczodrzynski.edziennik.utils.Utils.d
|
||||||
@ -38,7 +39,7 @@ class Librus(val app: App, val profile: Profile?, val loginStore: LoginStore, va
|
|||||||
|
|
||||||
private fun completed() {
|
private fun completed() {
|
||||||
data.saveData()
|
data.saveData()
|
||||||
data.notifyAndSyncEvents {
|
data.notify {
|
||||||
callback.onCompleted()
|
callback.onCompleted()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -105,12 +106,12 @@ class Librus(val app: App, val profile: Profile?, val loginStore: LoginStore, va
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getAttachment(messageId: Long, attachmentId: Long, attachmentName: String) {
|
override fun getAttachment(message: Message, attachmentId: Long, attachmentName: String) {
|
||||||
LibrusLoginPortal(data) {
|
LibrusLoginPortal(data) {
|
||||||
LibrusLoginApi(data) {
|
LibrusLoginApi(data) {
|
||||||
LibrusLoginSynergia(data) {
|
LibrusLoginSynergia(data) {
|
||||||
LibrusLoginMessages(data) {
|
LibrusLoginMessages(data) {
|
||||||
LibrusMessagesGetAttachment(data, messageId, attachmentId, attachmentName) {
|
LibrusMessagesGetAttachment(data, message, attachmentId, attachmentName) {
|
||||||
completed()
|
completed()
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,57 +2,58 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-11.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-11.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.Feature
|
import pl.szczodrzynski.edziennik.api.v2.models.Feature
|
||||||
|
|
||||||
const val ENDPOINT_LIBRUS_API_ME = 1001
|
const val ENDPOINT_LIBRUS_API_ME = 1001
|
||||||
const val ENDPOINT_LIBRUS_API_SCHOOLS = 1002
|
const val ENDPOINT_LIBRUS_API_SCHOOLS = 1002
|
||||||
const val ENDPOINT_LIBRUS_API_CLASSES = 1003
|
const val ENDPOINT_LIBRUS_API_CLASSES = 1003
|
||||||
const val ENDPOINT_LIBRUS_API_VIRTUAL_CLASSES = 1004
|
const val ENDPOINT_LIBRUS_API_VIRTUAL_CLASSES = 1004
|
||||||
const val ENDPOINT_LIBRUS_API_UNITS = 1005
|
const val ENDPOINT_LIBRUS_API_UNITS = 1005
|
||||||
const val ENDPOINT_LIBRUS_API_USERS = 1006
|
const val ENDPOINT_LIBRUS_API_USERS = 1006
|
||||||
const val ENDPOINT_LIBRUS_API_SUBJECTS = 1007
|
const val ENDPOINT_LIBRUS_API_SUBJECTS = 1007
|
||||||
const val ENDPOINT_LIBRUS_API_CLASSROOMS = 1008
|
const val ENDPOINT_LIBRUS_API_CLASSROOMS = 1008
|
||||||
const val ENDPOINT_LIBRUS_API_PUSH_CONFIG = 1010
|
const val ENDPOINT_LIBRUS_API_PUSH_CONFIG = 1010
|
||||||
const val ENDPOINT_LIBRUS_API_TIMETABLES = 1015
|
const val ENDPOINT_LIBRUS_API_TIMETABLES = 1015
|
||||||
const val ENDPOINT_LIBRUS_API_SUBSTITUTIONS = 1016
|
const val ENDPOINT_LIBRUS_API_SUBSTITUTIONS = 1016
|
||||||
const val ENDPOINT_LIBRUS_API_NORMAL_GC = 1021
|
const val ENDPOINT_LIBRUS_API_NORMAL_GRADE_CATEGORIES = 1021
|
||||||
const val ENDPOINT_LIBRUS_API_POINT_GC = 1022
|
const val ENDPOINT_LIBRUS_API_POINT_GRADE_CATEGORIES = 1022
|
||||||
const val ENDPOINT_LIBRUS_API_DESCRIPTIVE_GC = 1023
|
const val ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADE_CATEGORIES = 1023
|
||||||
const val ENDPOINT_LIBRUS_API_TEXT_GC = 1024
|
const val ENDPOINT_LIBRUS_API_TEXT_GRADE_CATEGORIES = 1024
|
||||||
const val ENDPOINT_LIBRUS_API_DESCRIPTIVE_TEXT_GC = 1025
|
const val ENDPOINT_LIBRUS_API_DESCRIPTIVE_TEXT_GRADE_CATEGORIES = 1025
|
||||||
const val ENDPOINT_LIBRUS_API_BEHAVIOUR_GC = 1026
|
const val ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADE_CATEGORIES = 1026
|
||||||
const val ENDPOINT_LIBRUS_API_NORMAL_GRADE_COMMENTS = 1030
|
const val ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADE_COMMENTS = 1027
|
||||||
const val ENDPOINT_LIBRUS_API_NORMAL_GRADES = 1031
|
const val ENDPOINT_LIBRUS_API_NORMAL_GRADE_COMMENTS = 1030
|
||||||
const val ENDPOINT_LIBRUS_API_POINT_GRADES = 1032
|
const val ENDPOINT_LIBRUS_API_NORMAL_GRADES = 1031
|
||||||
const val ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADES = 1033
|
const val ENDPOINT_LIBRUS_API_POINT_GRADES = 1032
|
||||||
const val ENDPOINT_LIBRUS_API_TEXT_GRADES = 1034
|
const val ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADES = 1033
|
||||||
const val ENDPOINT_LIBRUS_API_DESCRIPTIVE_TEXT_GRADES = 1035
|
const val ENDPOINT_LIBRUS_API_TEXT_GRADES = 1034
|
||||||
const val ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADES = 1036
|
const val ENDPOINT_LIBRUS_API_DESCRIPTIVE_TEXT_GRADES = 1035
|
||||||
const val ENDPOINT_LIBRUS_API_EVENT_TYPES = 1040
|
const val ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADES = 1036
|
||||||
const val ENDPOINT_LIBRUS_API_EVENTS = 1041
|
const val ENDPOINT_LIBRUS_API_EVENT_TYPES = 1040
|
||||||
const val ENDPOINT_LIBRUS_API_HOMEWORK = 1050
|
const val ENDPOINT_LIBRUS_API_EVENTS = 1041
|
||||||
const val ENDPOINT_LIBRUS_API_LUCKY_NUMBER = 1060
|
const val ENDPOINT_LIBRUS_API_HOMEWORK = 1050
|
||||||
const val ENDPOINT_LIBRUS_API_NOTICE_TYPES = 1070
|
const val ENDPOINT_LIBRUS_API_LUCKY_NUMBER = 1060
|
||||||
const val ENDPOINT_LIBRUS_API_NOTICES = 1071
|
const val ENDPOINT_LIBRUS_API_NOTICE_TYPES = 1070
|
||||||
const val ENDPOINT_LIBRUS_API_ATTENDANCE_TYPES = 1080
|
const val ENDPOINT_LIBRUS_API_NOTICES = 1071
|
||||||
const val ENDPOINT_LIBRUS_API_ATTENDANCES = 1081
|
const val ENDPOINT_LIBRUS_API_ATTENDANCE_TYPES = 1080
|
||||||
const val ENDPOINT_LIBRUS_API_ANNOUNCEMENTS = 1090
|
const val ENDPOINT_LIBRUS_API_ATTENDANCES = 1081
|
||||||
const val ENDPOINT_LIBRUS_API_PT_MEETINGS = 1100
|
const val ENDPOINT_LIBRUS_API_ANNOUNCEMENTS = 1090
|
||||||
const val ENDPOINT_LIBRUS_API_TEACHER_FREE_DAY_TYPES = 1109
|
const val ENDPOINT_LIBRUS_API_PT_MEETINGS = 1100
|
||||||
const val ENDPOINT_LIBRUS_API_TEACHER_FREE_DAYS = 1110
|
const val ENDPOINT_LIBRUS_API_TEACHER_FREE_DAY_TYPES = 1109
|
||||||
const val ENDPOINT_LIBRUS_API_SCHOOL_FREE_DAYS = 1120
|
const val ENDPOINT_LIBRUS_API_TEACHER_FREE_DAYS = 1110
|
||||||
const val ENDPOINT_LIBRUS_API_CLASS_FREE_DAYS = 1130
|
const val ENDPOINT_LIBRUS_API_SCHOOL_FREE_DAYS = 1120
|
||||||
const val ENDPOINT_LIBRUS_SYNERGIA_INFO = 2010
|
const val ENDPOINT_LIBRUS_API_CLASS_FREE_DAYS = 1130
|
||||||
const val ENDPOINT_LIBRUS_SYNERGIA_GRADES = 2020
|
const val ENDPOINT_LIBRUS_SYNERGIA_INFO = 2010
|
||||||
const val ENDPOINT_LIBRUS_SYNERGIA_HOMEWORK = 2030
|
const val ENDPOINT_LIBRUS_SYNERGIA_GRADES = 2020
|
||||||
const val ENDPOINT_LIBRUS_MESSAGES_RECEIVED = 3010
|
const val ENDPOINT_LIBRUS_SYNERGIA_HOMEWORK = 2030
|
||||||
const val ENDPOINT_LIBRUS_MESSAGES_SENT = 3020
|
const val ENDPOINT_LIBRUS_MESSAGES_RECEIVED = 3010
|
||||||
const val ENDPOINT_LIBRUS_MESSAGES_TRASH = 3030
|
const val ENDPOINT_LIBRUS_MESSAGES_SENT = 3020
|
||||||
const val ENDPOINT_LIBRUS_MESSAGES_RECEIVERS = 3040
|
const val ENDPOINT_LIBRUS_MESSAGES_TRASH = 3030
|
||||||
const val ENDPOINT_LIBRUS_MESSAGES_GET = 3040
|
const val ENDPOINT_LIBRUS_MESSAGES_RECEIVERS = 3040
|
||||||
|
const val ENDPOINT_LIBRUS_MESSAGES_GET = 3040
|
||||||
|
|
||||||
val LibrusFeatures = listOf(
|
val LibrusFeatures = listOf(
|
||||||
|
|
||||||
@ -60,7 +61,7 @@ val LibrusFeatures = listOf(
|
|||||||
Feature(LOGIN_TYPE_LIBRUS, FEATURE_PUSH_CONFIG, listOf(
|
Feature(LOGIN_TYPE_LIBRUS, FEATURE_PUSH_CONFIG, listOf(
|
||||||
ENDPOINT_LIBRUS_API_PUSH_CONFIG to LOGIN_METHOD_LIBRUS_API
|
ENDPOINT_LIBRUS_API_PUSH_CONFIG to LOGIN_METHOD_LIBRUS_API
|
||||||
), listOf(LOGIN_METHOD_LIBRUS_API)).withShouldSync { data ->
|
), listOf(LOGIN_METHOD_LIBRUS_API)).withShouldSync { data ->
|
||||||
data.app.appConfig.fcmTokens[LOGIN_TYPE_LIBRUS]?.second?.contains(data.profileId) == false
|
!data.app.config.sync.tokenLibrusList.contains(data.profileId)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
@ -92,13 +93,14 @@ val LibrusFeatures = listOf(
|
|||||||
* All grades + categories.
|
* All grades + categories.
|
||||||
*/
|
*/
|
||||||
Feature(LOGIN_TYPE_LIBRUS, FEATURE_GRADES, listOf(
|
Feature(LOGIN_TYPE_LIBRUS, FEATURE_GRADES, listOf(
|
||||||
ENDPOINT_LIBRUS_API_NORMAL_GC to LOGIN_METHOD_LIBRUS_API,
|
ENDPOINT_LIBRUS_API_NORMAL_GRADE_CATEGORIES to LOGIN_METHOD_LIBRUS_API,
|
||||||
ENDPOINT_LIBRUS_API_POINT_GC to LOGIN_METHOD_LIBRUS_API,
|
ENDPOINT_LIBRUS_API_POINT_GRADE_CATEGORIES to LOGIN_METHOD_LIBRUS_API,
|
||||||
ENDPOINT_LIBRUS_API_DESCRIPTIVE_GC to LOGIN_METHOD_LIBRUS_API,
|
ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADE_CATEGORIES to LOGIN_METHOD_LIBRUS_API,
|
||||||
ENDPOINT_LIBRUS_API_TEXT_GC to LOGIN_METHOD_LIBRUS_API,
|
ENDPOINT_LIBRUS_API_TEXT_GRADE_CATEGORIES to LOGIN_METHOD_LIBRUS_API,
|
||||||
ENDPOINT_LIBRUS_API_DESCRIPTIVE_TEXT_GC to LOGIN_METHOD_LIBRUS_API,
|
ENDPOINT_LIBRUS_API_DESCRIPTIVE_TEXT_GRADE_CATEGORIES to LOGIN_METHOD_LIBRUS_API,
|
||||||
ENDPOINT_LIBRUS_API_BEHAVIOUR_GC to LOGIN_METHOD_LIBRUS_API,
|
ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADE_CATEGORIES to LOGIN_METHOD_LIBRUS_API,
|
||||||
ENDPOINT_LIBRUS_API_NORMAL_GRADE_COMMENTS to LOGIN_METHOD_LIBRUS_API,
|
ENDPOINT_LIBRUS_API_NORMAL_GRADE_COMMENTS to LOGIN_METHOD_LIBRUS_API,
|
||||||
|
ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADE_COMMENTS to LOGIN_METHOD_LIBRUS_API,
|
||||||
ENDPOINT_LIBRUS_API_NORMAL_GRADES to LOGIN_METHOD_LIBRUS_API,
|
ENDPOINT_LIBRUS_API_NORMAL_GRADES to LOGIN_METHOD_LIBRUS_API,
|
||||||
ENDPOINT_LIBRUS_API_POINT_GRADES to LOGIN_METHOD_LIBRUS_API,
|
ENDPOINT_LIBRUS_API_POINT_GRADES to LOGIN_METHOD_LIBRUS_API,
|
||||||
ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADES to LOGIN_METHOD_LIBRUS_API,
|
ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADES to LOGIN_METHOD_LIBRUS_API,
|
@ -2,14 +2,14 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-9-21.
|
* Copyright (c) Kuba Szczodrzyński 2019-9-21.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data
|
||||||
|
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import im.wangchao.mhttp.Request
|
import im.wangchao.mhttp.Request
|
||||||
import im.wangchao.mhttp.Response
|
import im.wangchao.mhttp.Response
|
||||||
import im.wangchao.mhttp.callback.JsonCallbackHandler
|
import im.wangchao.mhttp.callback.JsonCallbackHandler
|
||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.getString
|
import pl.szczodrzynski.edziennik.getString
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils.d
|
import pl.szczodrzynski.edziennik.utils.Utils.d
|
||||||
@ -116,4 +116,4 @@ open class LibrusApi(open val data: DataLibrus) {
|
|||||||
.build()
|
.build()
|
||||||
.enqueue()
|
.enqueue()
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,14 +2,14 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-5.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-5.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.R
|
import pl.szczodrzynski.edziennik.R
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.*
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.api.*
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.messages.LibrusMessagesGetList
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.messages.LibrusMessagesGetList
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.synergia.LibrusSynergiaHomework
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.synergia.LibrusSynergiaHomework
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.synergia.LibrusSynergiaInfo
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.synergia.LibrusSynergiaInfo
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils
|
import pl.szczodrzynski.edziennik.utils.Utils
|
||||||
|
|
||||||
@ -81,17 +81,29 @@ class LibrusData(val data: DataLibrus, val onSuccess: () -> Unit) {
|
|||||||
LibrusApiTimetables(data, onSuccess)
|
LibrusApiTimetables(data, onSuccess)
|
||||||
}
|
}
|
||||||
|
|
||||||
ENDPOINT_LIBRUS_API_NORMAL_GRADES -> {
|
ENDPOINT_LIBRUS_API_NORMAL_GRADE_CATEGORIES -> {
|
||||||
data.startProgress(R.string.edziennik_progress_endpoint_grades)
|
data.startProgress(R.string.edziennik_progress_endpoint_grade_categories)
|
||||||
LibrusApiGrades(data, onSuccess)
|
LibrusApiGradeCategories(data, onSuccess)
|
||||||
|
}
|
||||||
|
ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADE_CATEGORIES -> {
|
||||||
|
data.startProgress(R.string.edziennik_progress_endpoint_grade_categories)
|
||||||
|
LibrusApiBehaviourGradeCategories(data, onSuccess)
|
||||||
}
|
}
|
||||||
ENDPOINT_LIBRUS_API_NORMAL_GRADE_COMMENTS -> {
|
ENDPOINT_LIBRUS_API_NORMAL_GRADE_COMMENTS -> {
|
||||||
data.startProgress(R.string.edziennik_progress_endpoint_grade_comments)
|
data.startProgress(R.string.edziennik_progress_endpoint_grade_comments)
|
||||||
LibrusApiGradeComments(data, onSuccess)
|
LibrusApiGradeComments(data, onSuccess)
|
||||||
}
|
}
|
||||||
ENDPOINT_LIBRUS_API_NORMAL_GC -> {
|
ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADE_COMMENTS -> {
|
||||||
data.startProgress(R.string.edziennik_progress_endpoint_grade_categories)
|
data.startProgress(R.string.edziennik_progress_endpoint_grade_comments)
|
||||||
LibrusApiGradeCategories(data, onSuccess)
|
LibrusApiBehaviourGradeComments(data, onSuccess)
|
||||||
|
}
|
||||||
|
ENDPOINT_LIBRUS_API_NORMAL_GRADES -> {
|
||||||
|
data.startProgress(R.string.edziennik_progress_endpoint_grades)
|
||||||
|
LibrusApiGrades(data, onSuccess)
|
||||||
|
}
|
||||||
|
ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADES -> {
|
||||||
|
data.startProgress(R.string.edziennik_progress_endpoint_behaviour_grades)
|
||||||
|
LibrusApiBehaviourGrades(data, onSuccess)
|
||||||
}
|
}
|
||||||
// TODO grades
|
// TODO grades
|
||||||
|
|
@ -2,7 +2,7 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-10-24
|
* Copyright (c) Kacper Ziubryniewicz 2019-10-24
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data
|
||||||
|
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import im.wangchao.mhttp.Request
|
import im.wangchao.mhttp.Request
|
||||||
@ -16,7 +16,7 @@ import org.jsoup.Jsoup
|
|||||||
import org.jsoup.nodes.Document
|
import org.jsoup.nodes.Document
|
||||||
import org.jsoup.parser.Parser
|
import org.jsoup.parser.Parser
|
||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils.d
|
import pl.szczodrzynski.edziennik.utils.Utils.d
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@ -196,7 +196,7 @@ open class LibrusMessages(open val data: DataLibrus) {
|
|||||||
try {
|
try {
|
||||||
onSuccess(file)
|
onSuccess(file)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
data.error(ApiError(tag, EXCEPTION_LIBRUS_MESSAGES_REQUEST)
|
data.error(ApiError(tag, EXCEPTION_LIBRUS_MESSAGES_FILE_REQUEST)
|
||||||
.withResponse(response)
|
.withResponse(response)
|
||||||
.withThrowable(e))
|
.withThrowable(e))
|
||||||
}
|
}
|
||||||
@ -206,7 +206,7 @@ open class LibrusMessages(open val data: DataLibrus) {
|
|||||||
try {
|
try {
|
||||||
onProgress(bytesWritten, bytesTotal)
|
onProgress(bytesWritten, bytesTotal)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
data.error(ApiError(tag, EXCEPTION_LIBRUS_MESSAGES_REQUEST)
|
data.error(ApiError(tag, EXCEPTION_LIBRUS_MESSAGES_FILE_REQUEST)
|
||||||
.withThrowable(e))
|
.withThrowable(e))
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,11 +1,11 @@
|
|||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data
|
||||||
|
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import im.wangchao.mhttp.Request
|
import im.wangchao.mhttp.Request
|
||||||
import im.wangchao.mhttp.Response
|
import im.wangchao.mhttp.Response
|
||||||
import im.wangchao.mhttp.callback.JsonCallbackHandler
|
import im.wangchao.mhttp.callback.JsonCallbackHandler
|
||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.getString
|
import pl.szczodrzynski.edziennik.getString
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils.d
|
import pl.szczodrzynski.edziennik.utils.Utils.d
|
||||||
@ -101,4 +101,4 @@ open class LibrusPortal(open val data: DataLibrus) {
|
|||||||
.build()
|
.build()
|
||||||
.enqueue()
|
.enqueue()
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,13 +2,13 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-10-21.
|
* Copyright (c) Kacper Ziubryniewicz 2019-10-21.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data
|
||||||
|
|
||||||
import im.wangchao.mhttp.Request
|
import im.wangchao.mhttp.Request
|
||||||
import im.wangchao.mhttp.Response
|
import im.wangchao.mhttp.Response
|
||||||
import im.wangchao.mhttp.callback.TextCallbackHandler
|
import im.wangchao.mhttp.callback.TextCallbackHandler
|
||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils.d
|
import pl.szczodrzynski.edziennik.utils.Utils.d
|
||||||
|
|
@ -2,16 +2,15 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-10-13
|
* Copyright (c) Kacper Ziubryniewicz 2019-10-13
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_ANNOUNCEMENTS
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_ANNOUNCEMENTS
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.announcements.Announcement
|
import pl.szczodrzynski.edziennik.data.db.modules.announcements.Announcement
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils
|
|
||||||
import pl.szczodrzynski.edziennik.utils.models.Date
|
import pl.szczodrzynski.edziennik.utils.models.Date
|
||||||
|
|
||||||
class LibrusApiAnnouncements(override val data: DataLibrus,
|
class LibrusApiAnnouncements(override val data: DataLibrus,
|
||||||
@ -20,19 +19,19 @@ class LibrusApiAnnouncements(override val data: DataLibrus,
|
|||||||
const val TAG = "LibrusApiAnnouncements"
|
const val TAG = "LibrusApiAnnouncements"
|
||||||
}
|
}
|
||||||
|
|
||||||
init {
|
init { data.profile?.also { profile ->
|
||||||
apiGet(TAG, "SchoolNotices") { json ->
|
apiGet(TAG, "SchoolNotices") { json ->
|
||||||
val announcements = json.getJsonArray("SchoolNotices").asJsonObjectList()
|
val announcements = json.getJsonArray("SchoolNotices").asJsonObjectList()
|
||||||
|
|
||||||
announcements?.forEach { announcement ->
|
announcements?.forEach { announcement ->
|
||||||
val id = Utils.crc16(announcement.getString("Id")?.toByteArray()
|
val id = announcement.getString("Id")?.crc32() ?: return@forEach
|
||||||
?: return@forEach).toLong()
|
|
||||||
val subject = announcement.getString("Subject") ?: ""
|
val subject = announcement.getString("Subject") ?: ""
|
||||||
val text = announcement.getString("Content") ?: ""
|
val text = announcement.getString("Content") ?: ""
|
||||||
val startDate = Date.fromY_m_d(announcement.getString("StartDate"))
|
val startDate = Date.fromY_m_d(announcement.getString("StartDate"))
|
||||||
val endDate = Date.fromY_m_d(announcement.getString("EndDate"))
|
val endDate = Date.fromY_m_d(announcement.getString("EndDate"))
|
||||||
val teacherId = announcement.getJsonObject("AddedBy")?.getLong("Id") ?: -1
|
val teacherId = announcement.getJsonObject("AddedBy")?.getLong("Id") ?: -1
|
||||||
val addedDate = Date.fromIso(announcement.getString("CreationDate"))
|
val addedDate = announcement.getString("CreationDate")?.let { Date.fromIso(it) }
|
||||||
|
?: System.currentTimeMillis()
|
||||||
val read = announcement.getBoolean("WasRead") ?: false
|
val read = announcement.getBoolean("WasRead") ?: false
|
||||||
|
|
||||||
val announcementObject = Announcement(
|
val announcementObject = Announcement(
|
||||||
@ -51,7 +50,7 @@ class LibrusApiAnnouncements(override val data: DataLibrus,
|
|||||||
Metadata.TYPE_ANNOUNCEMENT,
|
Metadata.TYPE_ANNOUNCEMENT,
|
||||||
id,
|
id,
|
||||||
read,
|
read,
|
||||||
read,
|
profile.empty || read,
|
||||||
addedDate
|
addedDate
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
@ -59,5 +58,5 @@ class LibrusApiAnnouncements(override val data: DataLibrus,
|
|||||||
data.setSyncNext(ENDPOINT_LIBRUS_API_ANNOUNCEMENTS, SYNC_ALWAYS)
|
data.setSyncNext(ENDPOINT_LIBRUS_API_ANNOUNCEMENTS, SYNC_ALWAYS)
|
||||||
onSuccess()
|
onSuccess()
|
||||||
}
|
}
|
||||||
}
|
}}
|
||||||
}
|
}
|
@ -2,13 +2,13 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-10-13
|
* Copyright (c) Kacper Ziubryniewicz 2019-10-13
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_ATTENDANCE_TYPES
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_ATTENDANCE_TYPES
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance
|
import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.attendance.AttendanceType
|
import pl.szczodrzynski.edziennik.data.db.modules.attendance.AttendanceType
|
||||||
|
|
@ -2,13 +2,13 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-10-13
|
* Copyright (c) Kacper Ziubryniewicz 2019-10-13
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import androidx.core.util.isEmpty
|
import androidx.core.util.isEmpty
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_ATTENDANCES
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_ATTENDANCES
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance
|
import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
||||||
@ -36,14 +36,14 @@ class LibrusApiAttendances(override val data: DataLibrus,
|
|||||||
val lessonNo = attendance.getInt("LessonNo") ?: return@forEach
|
val lessonNo = attendance.getInt("LessonNo") ?: return@forEach
|
||||||
val startTime = data.lessonRanges.get(lessonNo).startTime
|
val startTime = data.lessonRanges.get(lessonNo).startTime
|
||||||
val lessonDate = Date.fromY_m_d(attendance.getString("Date"))
|
val lessonDate = Date.fromY_m_d(attendance.getString("Date"))
|
||||||
val subjectId = data.lessonList.singleOrNull {
|
|
||||||
it.weekDay == lessonDate.weekDay && it.startTime.value == startTime.value
|
|
||||||
}?.subjectId ?: -1
|
|
||||||
val semester = attendance.getInt("Semester") ?: return@forEach
|
val semester = attendance.getInt("Semester") ?: return@forEach
|
||||||
val type = attendance.getJsonObject("Type")?.getLong("Id") ?: return@forEach
|
val type = attendance.getJsonObject("Type")?.getLong("Id") ?: return@forEach
|
||||||
val typeObject = data.attendanceTypes.get(type)
|
val typeObject = data.attendanceTypes.get(type)
|
||||||
val topic = typeObject?.name ?: ""
|
val topic = typeObject?.name ?: ""
|
||||||
|
|
||||||
|
val lessonList = data.db.timetableDao().getForDateNow(profileId, lessonDate)
|
||||||
|
val subjectId = lessonList.firstOrNull { it.startTime == startTime }?.subjectId ?: -1
|
||||||
|
|
||||||
val attendanceObject = Attendance(
|
val attendanceObject = Attendance(
|
||||||
profileId,
|
profileId,
|
||||||
id,
|
id,
|
@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Kacper Ziubryniewicz 2019-12-3
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
|
import android.graphics.Color
|
||||||
|
import pl.szczodrzynski.edziennik.*
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADE_CATEGORIES
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory
|
||||||
|
|
||||||
|
class LibrusApiBehaviourGradeCategories(override val data: DataLibrus,
|
||||||
|
val onSuccess: () -> Unit) : LibrusApi(data) {
|
||||||
|
companion object {
|
||||||
|
const val TAG = "LibrusApiBehaviourGradeCategories"
|
||||||
|
}
|
||||||
|
|
||||||
|
init {
|
||||||
|
apiGet(TAG, "BehaviourGrades/Points/Categories") { json ->
|
||||||
|
json.getJsonArray("Categories")?.asJsonObjectList()?.forEach { category ->
|
||||||
|
val id = category.getLong("Id") ?: return@forEach
|
||||||
|
val name = category.getString("Name") ?: ""
|
||||||
|
val valueFrom = category.getFloat("ValueFrom") ?: 0f
|
||||||
|
val valueTo = category.getFloat("ValueTo") ?: 0f
|
||||||
|
|
||||||
|
val gradeCategoryObject = GradeCategory(
|
||||||
|
profileId,
|
||||||
|
id,
|
||||||
|
-1f,
|
||||||
|
Color.BLUE,
|
||||||
|
name
|
||||||
|
).apply {
|
||||||
|
type = GradeCategory.TYPE_BEHAVIOUR
|
||||||
|
setValueRange(valueFrom, valueTo)
|
||||||
|
}
|
||||||
|
|
||||||
|
data.gradeCategories.put(id, gradeCategoryObject)
|
||||||
|
}
|
||||||
|
|
||||||
|
data.setSyncNext(ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADE_CATEGORIES, 1 * WEEK)
|
||||||
|
onSuccess()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Kacper Ziubryniewicz 2019-12-7
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
|
import pl.szczodrzynski.edziennik.*
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADE_COMMENTS
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory
|
||||||
|
|
||||||
|
class LibrusApiBehaviourGradeComments(override val data: DataLibrus,
|
||||||
|
val onSuccess: () -> Unit) : LibrusApi(data) {
|
||||||
|
companion object {
|
||||||
|
const val TAG = "LibrusApiBehaviourGradeComments"
|
||||||
|
}
|
||||||
|
|
||||||
|
init {
|
||||||
|
apiGet(TAG, "BehaviourGrades/Points/Comments") { json ->
|
||||||
|
|
||||||
|
json.getJsonArray("Comments")?.asJsonObjectList()?.forEach { comment ->
|
||||||
|
val id = comment.getLong("Id") ?: return@forEach
|
||||||
|
val text = comment.getString("Text")?.fixWhiteSpaces() ?: return@forEach
|
||||||
|
|
||||||
|
val gradeCategoryObject = GradeCategory(
|
||||||
|
profileId,
|
||||||
|
id,
|
||||||
|
-1f,
|
||||||
|
-1,
|
||||||
|
text
|
||||||
|
).apply {
|
||||||
|
type = GradeCategory.TYPE_BEHAVIOUR_COMMENT
|
||||||
|
}
|
||||||
|
|
||||||
|
data.gradeCategories.put(id, gradeCategoryObject)
|
||||||
|
}
|
||||||
|
|
||||||
|
data.setSyncNext(ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADE_COMMENTS, SYNC_ALWAYS)
|
||||||
|
onSuccess()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,150 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Kacper Ziubryniewicz 2019-12-3
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
|
import pl.szczodrzynski.edziennik.*
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADES
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
||||||
|
import pl.szczodrzynski.edziennik.utils.models.Date
|
||||||
|
import java.text.DecimalFormat
|
||||||
|
|
||||||
|
class LibrusApiBehaviourGrades(override val data: DataLibrus,
|
||||||
|
val onSuccess: () -> Unit) : LibrusApi(data) {
|
||||||
|
companion object {
|
||||||
|
const val TAG = "LibrusApiBehaviourGrades"
|
||||||
|
}
|
||||||
|
|
||||||
|
private val nameFormat by lazy { DecimalFormat("#.##") }
|
||||||
|
|
||||||
|
init { data.profile?.let { profile ->
|
||||||
|
apiGet(TAG, "BehaviourGrades/Points") { json ->
|
||||||
|
|
||||||
|
val semester1StartGradeObject = Grade(
|
||||||
|
profileId,
|
||||||
|
-101,
|
||||||
|
data.app.getString(R.string.grade_start_points),
|
||||||
|
0xffbdbdbd.toInt(),
|
||||||
|
data.app.getString(R.string.grade_start_points_format, 1),
|
||||||
|
nameFormat.format(data.startPointsSemester1),
|
||||||
|
data.startPointsSemester1.toFloat(),
|
||||||
|
-1f,
|
||||||
|
1,
|
||||||
|
-1,
|
||||||
|
1
|
||||||
|
).apply { type = Grade.TYPE_BEHAVIOUR }
|
||||||
|
|
||||||
|
data.gradeList.add(semester1StartGradeObject)
|
||||||
|
data.metadataList.add(Metadata(
|
||||||
|
profileId,
|
||||||
|
Metadata.TYPE_GRADE,
|
||||||
|
semester1StartGradeObject.id,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
profile.getSemesterStart(1).inMillis
|
||||||
|
))
|
||||||
|
|
||||||
|
val semester2StartGradeObject = Grade(
|
||||||
|
profileId,
|
||||||
|
-102,
|
||||||
|
data.app.getString(R.string.grade_start_points),
|
||||||
|
0xffbdbdbd.toInt(),
|
||||||
|
data.app.getString(R.string.grade_start_points_format, 2),
|
||||||
|
nameFormat.format(data.startPointsSemester2),
|
||||||
|
data.startPointsSemester2.toFloat(),
|
||||||
|
-1f,
|
||||||
|
2,
|
||||||
|
-1,
|
||||||
|
1
|
||||||
|
).apply { type = Grade.TYPE_BEHAVIOUR }
|
||||||
|
|
||||||
|
data.gradeList.add(semester2StartGradeObject)
|
||||||
|
data.metadataList.add(Metadata(
|
||||||
|
profileId,
|
||||||
|
Metadata.TYPE_GRADE,
|
||||||
|
semester2StartGradeObject.id,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
profile.getSemesterStart(2).inMillis
|
||||||
|
))
|
||||||
|
|
||||||
|
json.getJsonArray("Grades")?.asJsonObjectList()?.forEach { grade ->
|
||||||
|
val id = grade.getLong("Id") ?: return@forEach
|
||||||
|
val value = grade.getFloat("Value")
|
||||||
|
val shortName = grade.getString("ShortName")
|
||||||
|
val semester = grade.getInt("Semester") ?: profile.currentSemester
|
||||||
|
val teacherId = grade.getJsonObject("AddedBy")?.getLong("Id") ?: -1
|
||||||
|
val addedDate = grade.getString("AddDate")?.let { Date.fromIso(it) }
|
||||||
|
?: System.currentTimeMillis()
|
||||||
|
|
||||||
|
val name = when {
|
||||||
|
value != null -> (if (value >= 0) "+" else "") + nameFormat.format(value)
|
||||||
|
shortName != null -> shortName
|
||||||
|
else -> return@forEach
|
||||||
|
}
|
||||||
|
|
||||||
|
val color = data.getColor(when {
|
||||||
|
value == null || value == 0f -> 12
|
||||||
|
value > 0 -> 16
|
||||||
|
value < 0 -> 26
|
||||||
|
else -> 12
|
||||||
|
})
|
||||||
|
|
||||||
|
val categoryId = grade.getJsonObject("Category")?.getLong("Id") ?: -1
|
||||||
|
val category = data.gradeCategories.singleOrNull {
|
||||||
|
it.categoryId == categoryId && it.type == GradeCategory.TYPE_BEHAVIOUR
|
||||||
|
}
|
||||||
|
|
||||||
|
val categoryName = category?.text ?: ""
|
||||||
|
|
||||||
|
val description = grade.getJsonArray("Comments")?.asJsonObjectList()?.let { comments ->
|
||||||
|
if (comments.isNotEmpty()) {
|
||||||
|
data.gradeCategories.singleOrNull {
|
||||||
|
it.type == GradeCategory.TYPE_BEHAVIOUR_COMMENT
|
||||||
|
&& it.categoryId == comments[0].asJsonObject.getLong("Id")
|
||||||
|
}?.text
|
||||||
|
} else null
|
||||||
|
} ?: ""
|
||||||
|
|
||||||
|
val valueFrom = value ?: category?.valueFrom ?: 0f
|
||||||
|
val valueTo = category?.valueTo ?: 0f
|
||||||
|
|
||||||
|
val gradeObject = Grade(
|
||||||
|
profileId,
|
||||||
|
id,
|
||||||
|
categoryName,
|
||||||
|
color,
|
||||||
|
description,
|
||||||
|
name,
|
||||||
|
valueFrom,
|
||||||
|
-1f,
|
||||||
|
semester,
|
||||||
|
teacherId,
|
||||||
|
1
|
||||||
|
).apply {
|
||||||
|
type = Grade.TYPE_BEHAVIOUR
|
||||||
|
valueMax = valueTo
|
||||||
|
}
|
||||||
|
|
||||||
|
data.gradeList.add(gradeObject)
|
||||||
|
data.metadataList.add(Metadata(
|
||||||
|
profileId,
|
||||||
|
Metadata.TYPE_GRADE,
|
||||||
|
id,
|
||||||
|
profile.empty,
|
||||||
|
profile.empty,
|
||||||
|
addedDate
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
data.setSyncNext(ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADES, SYNC_ALWAYS)
|
||||||
|
onSuccess()
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
}
|
@ -2,12 +2,12 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-10-14
|
* Copyright (c) Kacper Ziubryniewicz 2019-10-14
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.DAY
|
import pl.szczodrzynski.edziennik.DAY
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_CLASSES
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_CLASSES
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team
|
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team
|
||||||
import pl.szczodrzynski.edziennik.getJsonObject
|
import pl.szczodrzynski.edziennik.getJsonObject
|
||||||
import pl.szczodrzynski.edziennik.getLong
|
import pl.szczodrzynski.edziennik.getLong
|
@ -2,12 +2,12 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-24.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-24.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_CLASSROOMS
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_CLASSROOMS
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.classrooms.Classroom
|
import pl.szczodrzynski.edziennik.data.db.modules.classrooms.Classroom
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
@ -2,12 +2,12 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-24.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-24.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_EVENT_TYPES
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_EVENT_TYPES
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.events.EventType
|
import pl.szczodrzynski.edziennik.data.db.modules.events.EventType
|
||||||
|
|
||||||
class LibrusApiEventTypes(override val data: DataLibrus,
|
class LibrusApiEventTypes(override val data: DataLibrus,
|
@ -2,13 +2,13 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-4.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-4.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import androidx.core.util.isEmpty
|
import androidx.core.util.isEmpty
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_EVENTS
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_EVENTS
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.DataRemoveModel
|
import pl.szczodrzynski.edziennik.api.v2.models.DataRemoveModel
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.events.Event
|
import pl.szczodrzynski.edziennik.data.db.modules.events.Event
|
@ -2,13 +2,13 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-11-5
|
* Copyright (c) Kacper Ziubryniewicz 2019-11-5
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_NORMAL_GC
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_NORMAL_GRADE_CATEGORIES
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory
|
||||||
|
|
||||||
@ -22,7 +22,7 @@ class LibrusApiGradeCategories(override val data: DataLibrus,
|
|||||||
apiGet(TAG, "Grades/Categories") { json ->
|
apiGet(TAG, "Grades/Categories") { json ->
|
||||||
json.getJsonArray("Categories")?.asJsonObjectList()?.forEach { category ->
|
json.getJsonArray("Categories")?.asJsonObjectList()?.forEach { category ->
|
||||||
val id = category.getLong("Id") ?: return@forEach
|
val id = category.getLong("Id") ?: return@forEach
|
||||||
val name = category.getString("Name") ?: ""
|
val name = category.getString("Name")?.fixWhiteSpaces() ?: ""
|
||||||
val weight = when (category.getBoolean("CountToTheAverage")) {
|
val weight = when (category.getBoolean("CountToTheAverage")) {
|
||||||
true -> category.getFloat("Weight") ?: 0f
|
true -> category.getFloat("Weight") ?: 0f
|
||||||
else -> 0f
|
else -> 0f
|
||||||
@ -41,7 +41,7 @@ class LibrusApiGradeCategories(override val data: DataLibrus,
|
|||||||
data.gradeCategories.put(id, gradeCategoryObject)
|
data.gradeCategories.put(id, gradeCategoryObject)
|
||||||
}
|
}
|
||||||
|
|
||||||
data.setSyncNext(ENDPOINT_LIBRUS_API_NORMAL_GC, SYNC_ALWAYS)
|
data.setSyncNext(ENDPOINT_LIBRUS_API_NORMAL_GRADE_CATEGORIES, SYNC_ALWAYS)
|
||||||
onSuccess()
|
onSuccess()
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,17 +2,14 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-11-20
|
* Copyright (c) Kacper Ziubryniewicz 2019-11-20
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_NORMAL_GRADE_COMMENTS
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_NORMAL_GRADE_COMMENTS
|
||||||
import pl.szczodrzynski.edziennik.asJsonObjectList
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory
|
||||||
import pl.szczodrzynski.edziennik.getJsonArray
|
|
||||||
import pl.szczodrzynski.edziennik.getLong
|
|
||||||
import pl.szczodrzynski.edziennik.getString
|
|
||||||
|
|
||||||
class LibrusApiGradeComments(override val data: DataLibrus,
|
class LibrusApiGradeComments(override val data: DataLibrus,
|
||||||
val onSuccess: () -> Unit) : LibrusApi(data) {
|
val onSuccess: () -> Unit) : LibrusApi(data) {
|
||||||
@ -25,7 +22,7 @@ class LibrusApiGradeComments(override val data: DataLibrus,
|
|||||||
|
|
||||||
json.getJsonArray("Comments")?.asJsonObjectList()?.forEach { comment ->
|
json.getJsonArray("Comments")?.asJsonObjectList()?.forEach { comment ->
|
||||||
val id = comment.getLong("Id") ?: return@forEach
|
val id = comment.getLong("Id") ?: return@forEach
|
||||||
val text = comment.getString("Text")
|
val text = comment.getString("Text")?.fixWhiteSpaces() ?: return@forEach
|
||||||
|
|
||||||
val gradeCategoryObject = GradeCategory(
|
val gradeCategoryObject = GradeCategory(
|
||||||
profileId,
|
profileId,
|
||||||
@ -34,7 +31,7 @@ class LibrusApiGradeComments(override val data: DataLibrus,
|
|||||||
-1,
|
-1,
|
||||||
text
|
text
|
||||||
).apply {
|
).apply {
|
||||||
type = GradeCategory.TYPE_COMMENT
|
type = GradeCategory.TYPE_NORMAL_COMMENT
|
||||||
}
|
}
|
||||||
|
|
||||||
data.gradeCategories.put(id, gradeCategoryObject)
|
data.gradeCategories.put(id, gradeCategoryObject)
|
@ -1,9 +1,9 @@
|
|||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_NORMAL_GRADES
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_NORMAL_GRADES
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory
|
||||||
@ -46,7 +46,7 @@ class LibrusApiGrades(override val data: DataLibrus,
|
|||||||
val description = grade.getJsonArray("Comments")?.asJsonObjectList()?.let { comments ->
|
val description = grade.getJsonArray("Comments")?.asJsonObjectList()?.let { comments ->
|
||||||
if (comments.isNotEmpty()) {
|
if (comments.isNotEmpty()) {
|
||||||
data.gradeCategories.singleOrNull {
|
data.gradeCategories.singleOrNull {
|
||||||
it.type == GradeCategory.TYPE_COMMENT
|
it.type == GradeCategory.TYPE_NORMAL_COMMENT
|
||||||
&& it.categoryId == comments[0].asJsonObject.getLong("Id")
|
&& it.categoryId == comments[0].asJsonObject.getLong("Id")
|
||||||
}?.text
|
}?.text
|
||||||
} else null
|
} else null
|
@ -2,12 +2,12 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-12.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-12.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_HOMEWORK
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_HOMEWORK
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.DataRemoveModel
|
import pl.szczodrzynski.edziennik.api.v2.models.DataRemoveModel
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.events.Event
|
import pl.szczodrzynski.edziennik.data.db.modules.events.Event
|
@ -2,12 +2,12 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-10-14
|
* Copyright (c) Kacper Ziubryniewicz 2019-10-14
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.DAY
|
import pl.szczodrzynski.edziennik.DAY
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_LUCKY_NUMBER
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_LUCKY_NUMBER
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.luckynumber.LuckyNumber
|
import pl.szczodrzynski.edziennik.data.db.modules.luckynumber.LuckyNumber
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
||||||
import pl.szczodrzynski.edziennik.getInt
|
import pl.szczodrzynski.edziennik.getInt
|
@ -2,12 +2,12 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-3.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-3.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_ME
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_ME
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
|
|
||||||
class LibrusApiMe(override val data: DataLibrus,
|
class LibrusApiMe(override val data: DataLibrus,
|
||||||
val onSuccess: () -> Unit) : LibrusApi(data) {
|
val onSuccess: () -> Unit) : LibrusApi(data) {
|
@ -2,12 +2,12 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-24.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-24.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_NOTICE_TYPES
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_NOTICE_TYPES
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.notices.NoticeType
|
import pl.szczodrzynski.edziennik.data.db.modules.notices.NoticeType
|
||||||
|
|
||||||
class LibrusApiNoticeTypes(override val data: DataLibrus,
|
class LibrusApiNoticeTypes(override val data: DataLibrus,
|
@ -2,13 +2,13 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-24.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-24.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import androidx.core.util.isEmpty
|
import androidx.core.util.isEmpty
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_NOTICES
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_NOTICES
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice
|
import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice
|
@ -2,12 +2,12 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-24.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-24.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_PT_MEETINGS
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_PT_MEETINGS
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.events.Event
|
import pl.szczodrzynski.edziennik.data.db.modules.events.Event
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
||||||
import pl.szczodrzynski.edziennik.utils.models.Date
|
import pl.szczodrzynski.edziennik.utils.models.Date
|
@ -2,12 +2,12 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-4.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-4.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_SCHOOLS
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_SCHOOLS
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonRange
|
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonRange
|
||||||
import pl.szczodrzynski.edziennik.utils.models.Time
|
import pl.szczodrzynski.edziennik.utils.models.Time
|
||||||
import java.util.*
|
import java.util.*
|
@ -2,12 +2,12 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-23.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-23.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_SUBJECTS
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_SUBJECTS
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject
|
import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject
|
||||||
|
|
||||||
class LibrusApiSubjects(override val data: DataLibrus,
|
class LibrusApiSubjects(override val data: DataLibrus,
|
@ -2,12 +2,12 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-10-19
|
* Copyright (c) Kacper Ziubryniewicz 2019-10-19
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_TEACHER_FREE_DAY_TYPES
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_TEACHER_FREE_DAY_TYPES
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.teachers.TeacherAbsenceType
|
import pl.szczodrzynski.edziennik.data.db.modules.teachers.TeacherAbsenceType
|
||||||
|
|
||||||
class LibrusApiTeacherFreeDayTypes(override val data: DataLibrus,
|
class LibrusApiTeacherFreeDayTypes(override val data: DataLibrus,
|
@ -2,14 +2,14 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-10-4.
|
* Copyright (c) Kacper Ziubryniewicz 2019-10-4.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import androidx.core.util.isEmpty
|
import androidx.core.util.isEmpty
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_AGENDA
|
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_AGENDA
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_TEACHER_FREE_DAYS
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_TEACHER_FREE_DAYS
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.teachers.TeacherAbsence
|
import pl.szczodrzynski.edziennik.data.db.modules.teachers.TeacherAbsence
|
||||||
import pl.szczodrzynski.edziennik.utils.models.Date
|
import pl.szczodrzynski.edziennik.utils.models.Date
|
@ -2,11 +2,10 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-4.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-4.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
|
||||||
|
|
||||||
class LibrusApiTemplate(override val data: DataLibrus,
|
class LibrusApiTemplate(override val data: DataLibrus,
|
||||||
val onSuccess: () -> Unit) : LibrusApi(data) {
|
val onSuccess: () -> Unit) : LibrusApi(data) {
|
@ -2,14 +2,14 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-11-10.
|
* Copyright (c) Kuba Szczodrzyński 2019-11-10.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import androidx.core.util.isEmpty
|
import androidx.core.util.isEmpty
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_TIMETABLES
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_TIMETABLES
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.DataRemoveModel
|
import pl.szczodrzynski.edziennik.api.v2.models.DataRemoveModel
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
@ -2,12 +2,12 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-23.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-23.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_UNITS
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_UNITS
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
|
|
||||||
class LibrusApiUnits(override val data: DataLibrus,
|
class LibrusApiUnits(override val data: DataLibrus,
|
||||||
val onSuccess: () -> Unit) : LibrusApi(data) {
|
val onSuccess: () -> Unit) : LibrusApi(data) {
|
@ -2,12 +2,12 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-23.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-23.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_USERS
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_USERS
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher
|
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher
|
||||||
|
|
||||||
class LibrusApiUsers(override val data: DataLibrus,
|
class LibrusApiUsers(override val data: DataLibrus,
|
@ -2,12 +2,12 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-23.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-23.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_API_VIRTUAL_CLASSES
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_API_VIRTUAL_CLASSES
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team
|
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team
|
||||||
|
|
||||||
class LibrusApiVirtualClasses(override val data: DataLibrus,
|
class LibrusApiVirtualClasses(override val data: DataLibrus,
|
@ -2,28 +2,29 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-11-24
|
* Copyright (c) Kacper Ziubryniewicz 2019-11-24
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.messages
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.messages
|
||||||
|
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import org.greenrobot.eventbus.EventBus
|
import org.greenrobot.eventbus.EventBus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.ERROR_FILE_DOWNLOAD
|
import pl.szczodrzynski.edziennik.api.v2.ERROR_FILE_DOWNLOAD
|
||||||
import pl.szczodrzynski.edziennik.api.v2.EXCEPTION_LIBRUS_MESSAGES_REQUEST
|
import pl.szczodrzynski.edziennik.api.v2.EXCEPTION_LIBRUS_MESSAGES_REQUEST
|
||||||
import pl.szczodrzynski.edziennik.api.v2.Regexes
|
import pl.szczodrzynski.edziennik.api.v2.Regexes
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusMessages
|
||||||
import pl.szczodrzynski.edziennik.api.v2.events.AttachmentGetEvent
|
import pl.szczodrzynski.edziennik.api.v2.events.AttachmentGetEvent
|
||||||
import pl.szczodrzynski.edziennik.api.v2.events.AttachmentGetEvent.Companion.TYPE_FINISHED
|
import pl.szczodrzynski.edziennik.api.v2.events.AttachmentGetEvent.Companion.TYPE_FINISHED
|
||||||
import pl.szczodrzynski.edziennik.api.v2.events.AttachmentGetEvent.Companion.TYPE_PROGRESS
|
import pl.szczodrzynski.edziennik.api.v2.events.AttachmentGetEvent.Companion.TYPE_PROGRESS
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusMessages
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message
|
||||||
import pl.szczodrzynski.edziennik.get
|
import pl.szczodrzynski.edziennik.get
|
||||||
import pl.szczodrzynski.edziennik.getString
|
import pl.szczodrzynski.edziennik.getString
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils
|
import pl.szczodrzynski.edziennik.utils.Utils
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.coroutines.CoroutineContext
|
import kotlin.coroutines.CoroutineContext
|
||||||
|
|
||||||
|
class LibrusMessagesGetAttachment(
|
||||||
class LibrusMessagesGetAttachment(override val data: DataLibrus, val messageId: Long, val attachmentId: Long,
|
override val data: DataLibrus, val message: Message, val attachmentId: Long,
|
||||||
val attachmentName: String, val onSuccess: () -> Unit) : LibrusMessages(data), CoroutineScope {
|
val attachmentName: String, val onSuccess: () -> Unit) : LibrusMessages(data), CoroutineScope {
|
||||||
companion object {
|
companion object {
|
||||||
const val TAG = "LibrusMessagesGetAttachment"
|
const val TAG = "LibrusMessagesGetAttachment"
|
||||||
}
|
}
|
||||||
@ -38,7 +39,7 @@ class LibrusMessagesGetAttachment(override val data: DataLibrus, val messageId:
|
|||||||
init {
|
init {
|
||||||
messagesGet(TAG, "GetFileDownloadLink", parameters = mapOf(
|
messagesGet(TAG, "GetFileDownloadLink", parameters = mapOf(
|
||||||
"fileId" to attachmentId,
|
"fileId" to attachmentId,
|
||||||
"msgId" to messageId,
|
"msgId" to message.id,
|
||||||
"archive" to 0
|
"archive" to 0
|
||||||
)) { doc ->
|
)) { doc ->
|
||||||
val downloadLink = doc.select("response GetFileDownloadLink downloadLink").text()
|
val downloadLink = doc.select("response GetFileDownloadLink downloadLink").text()
|
||||||
@ -55,8 +56,6 @@ class LibrusMessagesGetAttachment(override val data: DataLibrus, val messageId:
|
|||||||
data.error(ApiError(TAG, ERROR_FILE_DOWNLOAD)
|
data.error(ApiError(TAG, ERROR_FILE_DOWNLOAD)
|
||||||
.withApiResponse(doc.toString()))
|
.withApiResponse(doc.toString()))
|
||||||
}
|
}
|
||||||
|
|
||||||
onSuccess()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,12 +91,11 @@ class LibrusMessagesGetAttachment(override val data: DataLibrus, val messageId:
|
|||||||
private fun downloadAttachment(attachmentKey: String) {
|
private fun downloadAttachment(attachmentKey: String) {
|
||||||
val targetFile = File(Utils.getStorageDir(), attachmentName)
|
val targetFile = File(Utils.getStorageDir(), attachmentName)
|
||||||
|
|
||||||
sandboxGetFile(TAG, "CSDownload&singleUseKey=$attachmentKey",
|
sandboxGetFile(TAG, "CSDownload&singleUseKey=$attachmentKey", targetFile, { file ->
|
||||||
targetFile, { file ->
|
|
||||||
|
|
||||||
val event = AttachmentGetEvent(
|
val event = AttachmentGetEvent(
|
||||||
profileId,
|
profileId,
|
||||||
messageId,
|
message.id,
|
||||||
attachmentId,
|
attachmentId,
|
||||||
TYPE_FINISHED,
|
TYPE_FINISHED,
|
||||||
file.absolutePath
|
file.absolutePath
|
||||||
@ -108,10 +106,12 @@ class LibrusMessagesGetAttachment(override val data: DataLibrus, val messageId:
|
|||||||
|
|
||||||
EventBus.getDefault().post(event)
|
EventBus.getDefault().post(event)
|
||||||
|
|
||||||
|
onSuccess()
|
||||||
|
|
||||||
}) { written, _ ->
|
}) { written, _ ->
|
||||||
val event = AttachmentGetEvent(
|
val event = AttachmentGetEvent(
|
||||||
profileId,
|
profileId,
|
||||||
messageId,
|
message.id,
|
||||||
attachmentId,
|
attachmentId,
|
||||||
TYPE_PROGRESS,
|
TYPE_PROGRESS,
|
||||||
bytesWritten = written
|
bytesWritten = written
|
@ -2,15 +2,15 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-10-24
|
* Copyright (c) Kacper Ziubryniewicz 2019-10-24
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.messages
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.messages
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.DAY
|
import pl.szczodrzynski.edziennik.DAY
|
||||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_MESSAGES
|
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_MESSAGES
|
||||||
import pl.szczodrzynski.edziennik.api.v2.ERROR_NOT_IMPLEMENTED
|
import pl.szczodrzynski.edziennik.api.v2.ERROR_NOT_IMPLEMENTED
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_MESSAGES_RECEIVED
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_MESSAGES_RECEIVED
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_MESSAGES_SENT
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_MESSAGES_SENT
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusMessages
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusMessages
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_RECEIVED
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_RECEIVED
|
@ -2,13 +2,13 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-11-11
|
* Copyright (c) Kacper Ziubryniewicz 2019-11-11
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.messages
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.messages
|
||||||
|
|
||||||
import android.util.Base64
|
import android.util.Base64
|
||||||
import org.greenrobot.eventbus.EventBus
|
import org.greenrobot.eventbus.EventBus
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusMessages
|
||||||
import pl.szczodrzynski.edziennik.api.v2.events.MessageGetEvent
|
import pl.szczodrzynski.edziennik.api.v2.events.MessageGetEvent
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusMessages
|
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_RECEIVED
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_RECEIVED
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_SENT
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_SENT
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull
|
||||||
@ -38,7 +38,7 @@ class LibrusMessagesGetMessage(
|
|||||||
val body = Base64.decode(message.select("Message").text(), Base64.DEFAULT)
|
val body = Base64.decode(message.select("Message").text(), Base64.DEFAULT)
|
||||||
.toString(Charset.defaultCharset())
|
.toString(Charset.defaultCharset())
|
||||||
.replace("\n", "<br>")
|
.replace("\n", "<br>")
|
||||||
.replace("<!\\[CDATA\\[", "")
|
.replace("<![CDATA[", "")
|
||||||
.replace("]]>", "")
|
.replace("]]>", "")
|
||||||
|
|
||||||
messageObject.apply {
|
messageObject.apply {
|
@ -2,11 +2,10 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-10-25
|
* Copyright (c) Kacper Ziubryniewicz 2019-10-25
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.messages
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.messages
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusMessages
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusMessages
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
|
||||||
|
|
||||||
class LibrusMessagesTemplate(override val data: DataLibrus, val onSuccess: () -> Unit) : LibrusMessages(data) {
|
class LibrusMessagesTemplate(override val data: DataLibrus, val onSuccess: () -> Unit) : LibrusMessages(data) {
|
||||||
companion object {
|
companion object {
|
@ -2,15 +2,15 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-10-22.
|
* Copyright (c) Kacper Ziubryniewicz 2019-10-22.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.synergia
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.synergia
|
||||||
|
|
||||||
import org.jsoup.Jsoup
|
import org.jsoup.Jsoup
|
||||||
import pl.szczodrzynski.edziennik.HOUR
|
import pl.szczodrzynski.edziennik.HOUR
|
||||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_HOMEWORK
|
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_HOMEWORK
|
||||||
import pl.szczodrzynski.edziennik.api.v2.POST
|
import pl.szczodrzynski.edziennik.api.v2.POST
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_SYNERGIA_HOMEWORK
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_SYNERGIA_HOMEWORK
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusSynergia
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusSynergia
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.DataRemoveModel
|
import pl.szczodrzynski.edziennik.api.v2.models.DataRemoveModel
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.events.Event
|
import pl.szczodrzynski.edziennik.data.db.modules.events.Event
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
@ -2,13 +2,13 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-10-23
|
* Copyright (c) Kacper Ziubryniewicz 2019-10-23
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.synergia
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.synergia
|
||||||
|
|
||||||
import org.jsoup.Jsoup
|
import org.jsoup.Jsoup
|
||||||
import pl.szczodrzynski.edziennik.MONTH
|
import pl.szczodrzynski.edziennik.MONTH
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_SYNERGIA_INFO
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.ENDPOINT_LIBRUS_SYNERGIA_INFO
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusSynergia
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusSynergia
|
||||||
|
|
||||||
class LibrusSynergiaInfo(override val data: DataLibrus, val onSuccess: () -> Unit) : LibrusSynergia(data) {
|
class LibrusSynergiaInfo(override val data: DataLibrus, val onSuccess: () -> Unit) : LibrusSynergia(data) {
|
||||||
companion object {
|
companion object {
|
@ -2,10 +2,10 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-10-26
|
* Copyright (c) Kacper Ziubryniewicz 2019-10-26
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.synergia
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.synergia
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusSynergia
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusSynergia
|
||||||
|
|
||||||
class LibrusSynergiaMarkAllAnnouncementsAsRead(override val data: DataLibrus, val onSuccess: () -> Unit) : LibrusSynergia(data) {
|
class LibrusSynergiaMarkAllAnnouncementsAsRead(override val data: DataLibrus, val onSuccess: () -> Unit) : LibrusSynergia(data) {
|
||||||
companion object {
|
companion object {
|
@ -2,12 +2,10 @@
|
|||||||
* Copyright (c) Kacper Ziubryniewicz 2019-10-23
|
* Copyright (c) Kacper Ziubryniewicz 2019-10-23
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.synergia
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.synergia
|
||||||
|
|
||||||
import org.jsoup.Jsoup
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusSynergia
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusSynergia
|
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
|
||||||
|
|
||||||
class LibrusSynergiaTemplate(override val data: DataLibrus, val onSuccess: () -> Unit) : LibrusSynergia(data) {
|
class LibrusSynergiaTemplate(override val data: DataLibrus, val onSuccess: () -> Unit) : LibrusSynergia(data) {
|
||||||
companion object {
|
companion object {
|
@ -1,4 +1,4 @@
|
|||||||
package pl.szczodrzynski.edziennik.api.v2.librus.firstlogin
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.firstlogin
|
||||||
|
|
||||||
import org.greenrobot.eventbus.EventBus
|
import org.greenrobot.eventbus.EventBus
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
@ -6,15 +6,15 @@ import pl.szczodrzynski.edziennik.api.v2.ERROR_NO_STUDENTS_IN_ACCOUNT
|
|||||||
import pl.szczodrzynski.edziennik.api.v2.FAKE_LIBRUS_ACCOUNTS
|
import pl.szczodrzynski.edziennik.api.v2.FAKE_LIBRUS_ACCOUNTS
|
||||||
import pl.szczodrzynski.edziennik.api.v2.LIBRUS_ACCOUNTS_URL
|
import pl.szczodrzynski.edziennik.api.v2.LIBRUS_ACCOUNTS_URL
|
||||||
import pl.szczodrzynski.edziennik.api.v2.LOGIN_MODE_LIBRUS_EMAIL
|
import pl.szczodrzynski.edziennik.api.v2.LOGIN_MODE_LIBRUS_EMAIL
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusPortal
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.login.LibrusLoginApi
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.login.LibrusLoginPortal
|
||||||
import pl.szczodrzynski.edziennik.api.v2.events.FirstLoginFinishedEvent
|
import pl.szczodrzynski.edziennik.api.v2.events.FirstLoginFinishedEvent
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusPortal
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.login.LibrusLoginApi
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.login.LibrusLoginPortal
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.data.api.AppError.CODE_LIBRUS_DISCONNECTED
|
import pl.szczodrzynski.edziennik.api.v2.models.AppError.CODE_LIBRUS_DISCONNECTED
|
||||||
import pl.szczodrzynski.edziennik.data.api.AppError.CODE_SYNERGIA_NOT_ACTIVATED
|
import pl.szczodrzynski.edziennik.api.v2.models.AppError.CODE_SYNERGIA_NOT_ACTIVATED
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||||
|
|
||||||
class LibrusFirstLogin(val data: DataLibrus, val onSuccess: () -> Unit) {
|
class LibrusFirstLogin(val data: DataLibrus, val onSuccess: () -> Unit) {
|
||||||
@ -85,8 +85,38 @@ class LibrusFirstLogin(val data: DataLibrus, val onSuccess: () -> Unit) {
|
|||||||
LibrusLoginApi(data) {
|
LibrusLoginApi(data) {
|
||||||
api.apiGet(TAG, "Me") { json ->
|
api.apiGet(TAG, "Me") { json ->
|
||||||
|
|
||||||
|
val profile = Profile()
|
||||||
|
|
||||||
|
val me = json.getJsonObject("Me")
|
||||||
|
val account = me?.getJsonObject("Account")
|
||||||
|
val user = me?.getJsonObject("User")
|
||||||
|
|
||||||
|
profile.putStudentData("isPremium", account?.getBoolean("IsPremium") == true || account?.getBoolean("IsPremiumDemo") == true)
|
||||||
|
|
||||||
|
val isParent = account?.getInt("GroupId") == 5
|
||||||
|
profile.accountNameLong =
|
||||||
|
if (isParent)
|
||||||
|
buildFullName(account?.getString("FirstName"), account?.getString("LastName"))
|
||||||
|
else null
|
||||||
|
|
||||||
|
profile.studentNameLong =
|
||||||
|
buildFullName(user?.getString("FirstName"), user?.getString("LastName"))
|
||||||
|
|
||||||
|
profile.studentNameShort = profile.studentNameLong?.getShortName()
|
||||||
|
profile.name = profile.studentNameLong
|
||||||
|
profile.subname = account.getString("Login")
|
||||||
|
profile.empty = true
|
||||||
|
profile.putStudentData("accountId", account.getInt("Id") ?: 0)
|
||||||
|
profile.putStudentData("accountLogin", profile.subname)
|
||||||
|
profile.putStudentData("accountToken", data.apiAccessToken)
|
||||||
|
profile.putStudentData("accountRefreshToken", data.apiRefreshToken)
|
||||||
|
profile.putStudentData("accountTokenTime", data.apiTokenExpiryTime)
|
||||||
|
profileList.add(profile)
|
||||||
|
|
||||||
|
EventBus.getDefault().post(FirstLoginFinishedEvent(profileList, data.loginStore))
|
||||||
|
onSuccess()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,14 +2,14 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-5.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-5.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.login
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.login
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.R
|
import pl.szczodrzynski.edziennik.R
|
||||||
import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_LIBRUS_API
|
import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_LIBRUS_API
|
||||||
import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_LIBRUS_MESSAGES
|
import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_LIBRUS_MESSAGES
|
||||||
import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_LIBRUS_PORTAL
|
import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_LIBRUS_PORTAL
|
||||||
import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_LIBRUS_SYNERGIA
|
import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_LIBRUS_SYNERGIA
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils
|
import pl.szczodrzynski.edziennik.utils.Utils
|
||||||
|
|
||||||
class LibrusLogin(val data: DataLibrus, val onSuccess: () -> Unit) {
|
class LibrusLogin(val data: DataLibrus, val onSuccess: () -> Unit) {
|
||||||
@ -66,4 +66,4 @@ class LibrusLogin(val data: DataLibrus, val onSuccess: () -> Unit) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,7 +2,7 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-9-20.
|
* Copyright (c) Kuba Szczodrzyński 2019-9-20.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.login
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.login
|
||||||
|
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import im.wangchao.mhttp.Request
|
import im.wangchao.mhttp.Request
|
||||||
@ -10,7 +10,7 @@ import im.wangchao.mhttp.Response
|
|||||||
import im.wangchao.mhttp.body.MediaTypeUtils
|
import im.wangchao.mhttp.body.MediaTypeUtils
|
||||||
import im.wangchao.mhttp.callback.JsonCallbackHandler
|
import im.wangchao.mhttp.callback.JsonCallbackHandler
|
||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.getInt
|
import pl.szczodrzynski.edziennik.getInt
|
||||||
import pl.szczodrzynski.edziennik.getString
|
import pl.szczodrzynski.edziennik.getString
|
||||||
@ -248,4 +248,4 @@ class LibrusLoginApi {
|
|||||||
.build()
|
.build()
|
||||||
.enqueue()
|
.enqueue()
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,7 +2,7 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-9-20.
|
* Copyright (c) Kuba Szczodrzyński 2019-9-20.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.login
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.login
|
||||||
|
|
||||||
import im.wangchao.mhttp.Request
|
import im.wangchao.mhttp.Request
|
||||||
import im.wangchao.mhttp.Response
|
import im.wangchao.mhttp.Response
|
||||||
@ -10,7 +10,7 @@ import im.wangchao.mhttp.body.MediaTypeUtils
|
|||||||
import im.wangchao.mhttp.callback.TextCallbackHandler
|
import im.wangchao.mhttp.callback.TextCallbackHandler
|
||||||
import okhttp3.Cookie
|
import okhttp3.Cookie
|
||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.getUnixDate
|
import pl.szczodrzynski.edziennik.getUnixDate
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils.d
|
import pl.szczodrzynski.edziennik.utils.Utils.d
|
||||||
@ -160,4 +160,4 @@ class LibrusLoginMessages(val data: DataLibrus, val onSuccess: () -> Unit) {
|
|||||||
data.messagesSessionId = sessionId
|
data.messagesSessionId = sessionId
|
||||||
data.messagesSessionIdExpiryTime = response.getUnixDate() + 45 * 60 /* 45min */
|
data.messagesSessionIdExpiryTime = response.getUnixDate() + 45 * 60 /* 45min */
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package pl.szczodrzynski.edziennik.api.v2.librus.login
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.login
|
||||||
|
|
||||||
import android.util.Pair
|
import android.util.Pair
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
@ -8,7 +8,7 @@ import im.wangchao.mhttp.body.MediaTypeUtils
|
|||||||
import im.wangchao.mhttp.callback.JsonCallbackHandler
|
import im.wangchao.mhttp.callback.JsonCallbackHandler
|
||||||
import im.wangchao.mhttp.callback.TextCallbackHandler
|
import im.wangchao.mhttp.callback.TextCallbackHandler
|
||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.getInt
|
import pl.szczodrzynski.edziennik.getInt
|
||||||
import pl.szczodrzynski.edziennik.getString
|
import pl.szczodrzynski.edziennik.getString
|
||||||
@ -222,4 +222,4 @@ class LibrusLoginPortal(val data: DataLibrus, val onSuccess: () -> Unit) {
|
|||||||
.build()
|
.build()
|
||||||
.enqueue()
|
.enqueue()
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,7 +2,7 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-9-20.
|
* Copyright (c) Kuba Szczodrzyński 2019-9-20.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.login
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.login
|
||||||
|
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import im.wangchao.mhttp.Request
|
import im.wangchao.mhttp.Request
|
||||||
@ -10,8 +10,8 @@ import im.wangchao.mhttp.Response
|
|||||||
import im.wangchao.mhttp.callback.TextCallbackHandler
|
import im.wangchao.mhttp.callback.TextCallbackHandler
|
||||||
import okhttp3.Cookie
|
import okhttp3.Cookie
|
||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusApi
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.getString
|
import pl.szczodrzynski.edziennik.getString
|
||||||
import pl.szczodrzynski.edziennik.getUnixDate
|
import pl.szczodrzynski.edziennik.getUnixDate
|
||||||
@ -130,4 +130,4 @@ class LibrusLoginSynergia(override val data: DataLibrus, val onSuccess: () -> Un
|
|||||||
.build()
|
.build()
|
||||||
.enqueue()
|
.enqueue()
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,11 +1,11 @@
|
|||||||
package pl.szczodrzynski.edziennik.api.v2.librus.login
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.librus.login
|
||||||
|
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import im.wangchao.mhttp.Response
|
import im.wangchao.mhttp.Response
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusPortal
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.librus.data.LibrusPortal
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils.d
|
import pl.szczodrzynski.edziennik.utils.Utils.d
|
||||||
|
|
||||||
@ -70,4 +70,4 @@ class SynergiaTokenExtractor(override val data: DataLibrus, val onSuccess: () ->
|
|||||||
portalGet(TAG, (if (data.fakeLogin) FAKE_LIBRUS_ACCOUNT else LIBRUS_ACCOUNT_URL)+accountLogin, onSuccess = onSuccess)
|
portalGet(TAG, (if (data.fakeLogin) FAKE_LIBRUS_ACCOUNT else LIBRUS_ACCOUNT_URL)+accountLogin, onSuccess = onSuccess)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,11 +2,9 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-6.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-6.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.mobidziennik
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik
|
||||||
|
|
||||||
import android.util.LongSparseArray
|
import android.util.LongSparseArray
|
||||||
import android.util.SparseArray
|
|
||||||
import android.util.SparseIntArray
|
|
||||||
import androidx.core.util.isNotEmpty
|
import androidx.core.util.isNotEmpty
|
||||||
import pl.szczodrzynski.edziennik.App
|
import pl.szczodrzynski.edziennik.App
|
||||||
import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_MOBIDZIENNIK_WEB
|
import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_MOBIDZIENNIK_WEB
|
||||||
@ -114,4 +112,4 @@ class DataMobidziennik(app: App, profile: Profile?, loginStore: LoginStore) : Da
|
|||||||
var lessonNumber: Int,
|
var lessonNumber: Int,
|
||||||
var signed: String
|
var signed: String
|
||||||
)
|
)
|
||||||
}
|
}
|
@ -2,22 +2,24 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-5.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-5.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.mobidziennik
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik
|
||||||
|
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import pl.szczodrzynski.edziennik.App
|
import pl.szczodrzynski.edziennik.App
|
||||||
import pl.szczodrzynski.edziennik.api.v2.CODE_INTERNAL_LIBRUS_ACCOUNT_410
|
import pl.szczodrzynski.edziennik.api.v2.CODE_INTERNAL_LIBRUS_ACCOUNT_410
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.data.MobidziennikData
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.data.web.MobidziennikWebGetAttachment
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.data.web.MobidziennikWebGetMessage
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.firstlogin.MobidziennikFirstLogin
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.login.MobidziennikLogin
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.login.MobidziennikLoginWeb
|
||||||
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikCallback
|
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikCallback
|
||||||
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikInterface
|
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikInterface
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.MobidziennikData
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.web.MobidziennikWebGetMessage
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.firstlogin.MobidziennikFirstLogin
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.login.MobidziennikLogin
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.login.MobidziennikLoginWeb
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennikLoginMethods
|
import pl.szczodrzynski.edziennik.api.v2.mobidziennikLoginMethods
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.api.v2.prepare
|
import pl.szczodrzynski.edziennik.api.v2.prepare
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils.d
|
import pl.szczodrzynski.edziennik.utils.Utils.d
|
||||||
@ -25,6 +27,8 @@ import pl.szczodrzynski.edziennik.utils.Utils.d
|
|||||||
class Mobidziennik(val app: App, val profile: Profile?, val loginStore: LoginStore, val callback: EdziennikCallback) : EdziennikInterface {
|
class Mobidziennik(val app: App, val profile: Profile?, val loginStore: LoginStore, val callback: EdziennikCallback) : EdziennikInterface {
|
||||||
companion object {
|
companion object {
|
||||||
private const val TAG = "Mobidziennik"
|
private const val TAG = "Mobidziennik"
|
||||||
|
|
||||||
|
const val API_KEY = "szkolny_eu_72c7dbc8b97f1e5dd2d118cacf51c2b8543d15c0f65b7a59979adb0a1296b235d7febb826dd2a28688def6efe0811b924b04d7f3c7b7d005354e06dc56815d57"
|
||||||
}
|
}
|
||||||
|
|
||||||
val internalErrorList = mutableListOf<Int>()
|
val internalErrorList = mutableListOf<Int>()
|
||||||
@ -39,7 +43,7 @@ class Mobidziennik(val app: App, val profile: Profile?, val loginStore: LoginSto
|
|||||||
|
|
||||||
private fun completed() {
|
private fun completed() {
|
||||||
data.saveData()
|
data.saveData()
|
||||||
data.notifyAndSyncEvents {
|
data.notify {
|
||||||
callback.onCompleted()
|
callback.onCompleted()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -76,8 +80,12 @@ class Mobidziennik(val app: App, val profile: Profile?, val loginStore: LoginSto
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getAttachment(messageId: Long, attachmentId: Long, attachmentName: String) {
|
override fun getAttachment(message: Message, attachmentId: Long, attachmentName: String) {
|
||||||
|
MobidziennikLoginWeb(data) {
|
||||||
|
MobidziennikWebGetAttachment(data, message, attachmentId, attachmentName) {
|
||||||
|
completed()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun firstLogin() {
|
override fun firstLogin() {
|
@ -2,7 +2,7 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-5.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-5.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.mobidziennik
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.Feature
|
import pl.szczodrzynski.edziennik.api.v2.models.Feature
|
||||||
@ -104,4 +104,4 @@ val MobidziennikFeatures = listOf(
|
|||||||
ENDPOINT_MOBIDZIENNIK_WEB_ATTENDANCE to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
ENDPOINT_MOBIDZIENNIK_WEB_ATTENDANCE to LOGIN_METHOD_MOBIDZIENNIK_WEB
|
||||||
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)).apply { priority = 4 }*/
|
), listOf(LOGIN_METHOD_MOBIDZIENNIK_WEB)).apply { priority = 4 }*/
|
||||||
|
|
||||||
)
|
)
|
@ -2,15 +2,15 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-5.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-5.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.mobidziennik.data
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.data
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.R
|
import pl.szczodrzynski.edziennik.R
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.*
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.api.MobidziennikApi
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.data.api.MobidziennikApi
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.web.MobidziennikWebCalendar
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.data.web.MobidziennikWebCalendar
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.web.MobidziennikWebGrades
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.data.web.MobidziennikWebGrades
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.web.MobidziennikWebMessagesAll
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.data.web.MobidziennikWebMessagesAll
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.web.MobidziennikWebMessagesInbox
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.data.web.MobidziennikWebMessagesInbox
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils
|
import pl.szczodrzynski.edziennik.utils.Utils
|
||||||
|
|
||||||
class MobidziennikData(val data: DataMobidziennik, val onSuccess: () -> Unit) {
|
class MobidziennikData(val data: DataMobidziennik, val onSuccess: () -> Unit) {
|
@ -2,16 +2,18 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-5.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-5.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.mobidziennik.data
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.data
|
||||||
|
|
||||||
import im.wangchao.mhttp.Request
|
import im.wangchao.mhttp.Request
|
||||||
import im.wangchao.mhttp.Response
|
import im.wangchao.mhttp.Response
|
||||||
|
import im.wangchao.mhttp.callback.FileCallbackHandler
|
||||||
import im.wangchao.mhttp.callback.TextCallbackHandler
|
import im.wangchao.mhttp.callback.TextCallbackHandler
|
||||||
import okhttp3.Cookie
|
import okhttp3.Cookie
|
||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.DataMobidziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.DataMobidziennik
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils.d
|
import pl.szczodrzynski.edziennik.utils.Utils.d
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
open class MobidziennikWeb(open val data: DataMobidziennik) {
|
open class MobidziennikWeb(open val data: DataMobidziennik) {
|
||||||
companion object {
|
companion object {
|
||||||
@ -24,7 +26,7 @@ open class MobidziennikWeb(open val data: DataMobidziennik) {
|
|||||||
val profile
|
val profile
|
||||||
get() = data.profile
|
get() = data.profile
|
||||||
|
|
||||||
fun webGet(tag: String, endpoint: String, method: Int = GET, payload: List<Pair<String, String>>? = null, onSuccess: (text: String) -> Unit) {
|
fun webGet(tag: String, endpoint: String, method: Int = GET, onSuccess: (text: String) -> Unit) {
|
||||||
val url = "https://${data.loginServerName}.mobidziennik.pl$endpoint"
|
val url = "https://${data.loginServerName}.mobidziennik.pl$endpoint"
|
||||||
|
|
||||||
d(tag, "Request: Mobidziennik/Web - $url")
|
d(tag, "Request: Mobidziennik/Web - $url")
|
||||||
@ -93,4 +95,77 @@ open class MobidziennikWeb(open val data: DataMobidziennik) {
|
|||||||
.build()
|
.build()
|
||||||
.enqueue()
|
.enqueue()
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
fun webGetFile(tag: String, action: String, targetFile: File, onSuccess: (file: File) -> Unit,
|
||||||
|
onProgress: (written: Long, total: Long) -> Unit) {
|
||||||
|
val url = "https://${data.loginServerName}.mobidziennik.pl$action"
|
||||||
|
|
||||||
|
d(tag, "Request: Mobidziennik/Web - $url")
|
||||||
|
|
||||||
|
if (data.webSessionKey == null) {
|
||||||
|
data.error(TAG, ERROR_MOBIDZIENNIK_WEB_NO_SESSION_KEY)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (data.webSessionValue == null) {
|
||||||
|
data.error(TAG, ERROR_MOBIDZIENNIK_WEB_NO_SESSION_VALUE)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (data.webServerId == null) {
|
||||||
|
data.error(TAG, ERROR_MOBIDZIENNIK_WEB_NO_SERVER_ID)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
val callback = object : FileCallbackHandler(targetFile) {
|
||||||
|
override fun onSuccess(file: File?, response: Response?) {
|
||||||
|
if (file == null) {
|
||||||
|
data.error(ApiError(TAG, ERROR_FILE_DOWNLOAD)
|
||||||
|
.withResponse(response))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
onSuccess(file)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
data.error(ApiError(tag, EXCEPTION_MOBIDZIENNIK_WEB_FILE_REQUEST)
|
||||||
|
.withResponse(response)
|
||||||
|
.withThrowable(e))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onProgress(bytesWritten: Long, bytesTotal: Long) {
|
||||||
|
try {
|
||||||
|
onProgress(bytesWritten, bytesTotal)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
data.error(ApiError(tag, EXCEPTION_MOBIDZIENNIK_WEB_FILE_REQUEST)
|
||||||
|
.withThrowable(e))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onFailure(response: Response?, throwable: Throwable?) {
|
||||||
|
data.error(ApiError(TAG, ERROR_REQUEST_FAILURE)
|
||||||
|
.withResponse(response)
|
||||||
|
.withThrowable(throwable))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data.app.cookieJar.saveFromResponse(null, listOf(
|
||||||
|
Cookie.Builder()
|
||||||
|
.name(data.webSessionKey!!)
|
||||||
|
.value(data.webSessionValue!!)
|
||||||
|
.domain("${data.loginServerName}.mobidziennik.pl")
|
||||||
|
.secure().httpOnly().build(),
|
||||||
|
Cookie.Builder()
|
||||||
|
.name("SERVERID")
|
||||||
|
.value(data.webServerId!!)
|
||||||
|
.domain("${data.loginServerName}.mobidziennik.pl")
|
||||||
|
.secure().httpOnly().build()
|
||||||
|
))
|
||||||
|
|
||||||
|
Request.builder()
|
||||||
|
.url(url)
|
||||||
|
.userAgent(MOBIDZIENNIK_USER_AGENT)
|
||||||
|
.callback(callback)
|
||||||
|
.build()
|
||||||
|
.enqueue()
|
||||||
|
}
|
||||||
|
}
|
@ -2,12 +2,12 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-11.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-11.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.ERROR_MOBIDZIENNIK_WEB_INVALID_RESPONSE
|
import pl.szczodrzynski.edziennik.api.v2.ERROR_MOBIDZIENNIK_WEB_INVALID_RESPONSE
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.DataMobidziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.DataMobidziennik
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.ENDPOINT_MOBIDZIENNIK_API_MAIN
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.ENDPOINT_MOBIDZIENNIK_API_MAIN
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.MobidziennikWeb
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.data.MobidziennikWeb
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
|
|
||||||
@ -50,4 +50,4 @@ class MobidziennikApi(override val data: DataMobidziennik,
|
|||||||
onSuccess()
|
onSuccess()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,9 +2,9 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-11.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-11.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.DataMobidziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.DataMobidziennik
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance
|
import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.*
|
import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.*
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
||||||
@ -55,4 +55,4 @@ class MobidziennikApiAttendance(val data: DataMobidziennik, rows: List<String>)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
}
|
}
|
@ -2,9 +2,9 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-11.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-11.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.DataMobidziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.DataMobidziennik
|
||||||
import pl.szczodrzynski.edziennik.utils.models.Date
|
import pl.szczodrzynski.edziennik.utils.models.Date
|
||||||
|
|
||||||
class MobidziennikApiDates(val data: DataMobidziennik, rows: List<String>) {
|
class MobidziennikApiDates(val data: DataMobidziennik, rows: List<String>) {
|
||||||
@ -21,4 +21,4 @@ class MobidziennikApiDates(val data: DataMobidziennik, rows: List<String>) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,11 +2,11 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-11.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-11.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.data.api
|
||||||
|
|
||||||
import androidx.core.util.contains
|
import androidx.core.util.contains
|
||||||
import pl.szczodrzynski.edziennik.api.v2.Regexes
|
import pl.szczodrzynski.edziennik.api.v2.Regexes
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.DataMobidziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.DataMobidziennik
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.DataRemoveModel
|
import pl.szczodrzynski.edziennik.api.v2.models.DataRemoveModel
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.events.Event
|
import pl.szczodrzynski.edziennik.data.db.modules.events.Event
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
@ -2,11 +2,11 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-7.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-7.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.data.api
|
||||||
|
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import androidx.core.util.contains
|
import androidx.core.util.contains
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.DataMobidziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.DataMobidziennik
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory
|
||||||
|
|
||||||
class MobidziennikApiGradeCategories(val data: DataMobidziennik, rows: List<String>) {
|
class MobidziennikApiGradeCategories(val data: DataMobidziennik, rows: List<String>) {
|
||||||
@ -38,4 +38,4 @@ class MobidziennikApiGradeCategories(val data: DataMobidziennik, rows: List<Stri
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,9 +2,9 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-8.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-8.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.DataMobidziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.DataMobidziennik
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.*
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.*
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
||||||
@ -86,4 +86,4 @@ class MobidziennikApiGrades(val data: DataMobidziennik, rows: List<String>) {
|
|||||||
addedDate++
|
addedDate++
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
}
|
}
|
@ -2,10 +2,10 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-11.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-11.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.data.api
|
||||||
|
|
||||||
import androidx.core.util.contains
|
import androidx.core.util.contains
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.DataMobidziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.DataMobidziennik
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.DataRemoveModel
|
import pl.szczodrzynski.edziennik.api.v2.models.DataRemoveModel
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.events.Event
|
import pl.szczodrzynski.edziennik.data.db.modules.events.Event
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
@ -2,9 +2,9 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-7.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-7.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.DataMobidziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.DataMobidziennik
|
||||||
import pl.szczodrzynski.edziennik.utils.models.Date
|
import pl.szczodrzynski.edziennik.utils.models.Date
|
||||||
import pl.szczodrzynski.edziennik.utils.models.Time
|
import pl.szczodrzynski.edziennik.utils.models.Time
|
||||||
|
|
||||||
@ -46,4 +46,4 @@ class MobidziennikApiLessons(val data: DataMobidziennik, rows: List<String>) {
|
|||||||
data.mobiLessons.add(lesson)
|
data.mobiLessons.add(lesson)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,9 +2,9 @@
|
|||||||
* Copyright (c) Kuba Szczodrzyński 2019-10-11.
|
* Copyright (c) Kuba Szczodrzyński 2019-10-11.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.mobidziennik.data.api
|
package pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.data.api
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.mobidziennik.DataMobidziennik
|
import pl.szczodrzynski.edziennik.api.v2.edziennik.mobidziennik.DataMobidziennik
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice
|
import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice
|
||||||
import pl.szczodrzynski.edziennik.utils.models.Date
|
import pl.szczodrzynski.edziennik.utils.models.Date
|
||||||
@ -52,4 +52,4 @@ class MobidziennikApiNotices(val data: DataMobidziennik, rows: List<String>) {
|
|||||||
))
|
))
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
}
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user