mirror of
https://github.com/szkolny-eu/szkolny-android.git
synced 2025-02-20 13:54:43 +01:00
Merge branch 'develop' into api-v2
This commit is contained in:
commit
48a2ae3599
2
.gitignore
vendored
2
.gitignore
vendored
@ -23,7 +23,7 @@ build/
|
||||
local.properties
|
||||
|
||||
# Proguard folder generated by Eclipse
|
||||
proguard/
|
||||
#proguard/
|
||||
|
||||
# Log Files
|
||||
*.log
|
||||
|
6
.idea/copyright/Kacper.xml
generated
Normal file
6
.idea/copyright/Kacper.xml
generated
Normal file
@ -0,0 +1,6 @@
|
||||
<component name="CopyrightManager">
|
||||
<copyright>
|
||||
<option name="notice" value="Copyright (c) Kacper Ziubryniewicz &#36;{today.year}-&#36;{today.month}-&#36;{today.day}" />
|
||||
<option name="myName" value="Kacper" />
|
||||
</copyright>
|
||||
</component>
|
8
.idea/misc.xml
generated
8
.idea/misc.xml
generated
@ -10,7 +10,7 @@
|
||||
<option name="myDefaultNotNull" value="androidx.annotation.RecentlyNonNull" />
|
||||
<option name="myNullables">
|
||||
<value>
|
||||
<list size="10">
|
||||
<list size="12">
|
||||
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
|
||||
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
|
||||
<item index="2" class="java.lang.String" itemvalue="javax.annotation.CheckForNull" />
|
||||
@ -21,12 +21,14 @@
|
||||
<item index="7" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.Nullable" />
|
||||
<item index="8" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableDecl" />
|
||||
<item index="9" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableType" />
|
||||
<item index="10" class="java.lang.String" itemvalue="android.annotation.Nullable" />
|
||||
<item index="11" class="java.lang.String" itemvalue="com.android.annotations.Nullable" />
|
||||
</list>
|
||||
</value>
|
||||
</option>
|
||||
<option name="myNotNulls">
|
||||
<value>
|
||||
<list size="9">
|
||||
<list size="11">
|
||||
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
|
||||
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
|
||||
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
|
||||
@ -36,6 +38,8 @@
|
||||
<item index="6" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.NonNull" />
|
||||
<item index="7" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullDecl" />
|
||||
<item index="8" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullType" />
|
||||
<item index="9" class="java.lang.String" itemvalue="android.annotation.NonNull" />
|
||||
<item index="10" class="java.lang.String" itemvalue="com.android.annotations.NonNull" />
|
||||
</list>
|
||||
</value>
|
||||
</option>
|
||||
|
14
app/proguard/android-job.pro
Normal file
14
app/proguard/android-job.pro
Normal file
@ -0,0 +1,14 @@
|
||||
-dontwarn com.evernote.android.job.gcm.**
|
||||
-dontwarn com.evernote.android.job.GcmAvailableHelper
|
||||
-dontwarn com.evernote.android.job.work.**
|
||||
-dontwarn com.evernote.android.job.WorkManagerAvailableHelper
|
||||
|
||||
-keep public class com.evernote.android.job.v21.PlatformJobService
|
||||
-keep public class com.evernote.android.job.v14.PlatformAlarmService
|
||||
-keep public class com.evernote.android.job.v14.PlatformAlarmReceiver
|
||||
-keep public class com.evernote.android.job.JobBootReceiver
|
||||
-keep public class com.evernote.android.job.JobRescheduleService
|
||||
-keep public class com.evernote.android.job.gcm.PlatformGcmService
|
||||
-keep public class com.evernote.android.job.work.PlatformWorker
|
||||
|
||||
-keep class com.evernote.android.job.** { *; }
|
42
app/proguard/app.pro
Normal file
42
app/proguard/app.pro
Normal file
@ -0,0 +1,42 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
||||
-keep class android.support.v7.widget.** { *; }
|
||||
|
||||
-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.EventFull { *; }
|
||||
-keepclassmembers class pl.szczodrzynski.edziennik.widgets.WidgetConfig { public *; }
|
||||
-keepnames class pl.szczodrzynski.edziennik.WidgetTimetable
|
||||
-keepnames class pl.szczodrzynski.edziennik.notifications.WidgetNotifications
|
||||
-keepnames class pl.szczodrzynski.edziennik.luckynumber.WidgetLuckyNumber
|
||||
|
||||
-keep class .R
|
||||
-keep class **.R$* {
|
||||
<fields>;
|
||||
}
|
||||
|
||||
-keepattributes SourceFile,LineNumberTable
|
||||
#-printmapping mapping.txt
|
||||
|
||||
-keep class okhttp3.** { *; }
|
||||
|
||||
-keep class com.google.android.material.tabs.** {*;}
|
1
app/proguard/blurry.pro
Normal file
1
app/proguard/blurry.pro
Normal file
@ -0,0 +1 @@
|
||||
-keep class android.support.v8.renderscript.** { *; }
|
25
app/proguard/cafebar.pro
Normal file
25
app/proguard/cafebar.pro
Normal file
@ -0,0 +1,25 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# By default, the flags in this file are appended to flags specified
|
||||
# in D:\AndroidSDK/tools/proguard/proguard-android.txt
|
||||
# You can edit the include path and order by changing the proguardFiles
|
||||
# directive in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# Add any project specific keep options here:
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
-keep class !android.support.v7.internal.view.menu.**,android.support.** {*;}
|
||||
-keep class android.support.v7.graphics.** { *; }
|
||||
-dontwarn android.support.v7.graphics.**
|
||||
|
||||
-keep class android.support.design.widget.** { *; }
|
||||
-keep interface android.support.design.widget.** { *; }
|
||||
-dontwarn android.support.design.**
|
10
app/proguard/eventbus.pro
Normal file
10
app/proguard/eventbus.pro
Normal file
@ -0,0 +1,10 @@
|
||||
-keepattributes *Annotation*
|
||||
-keepclassmembers class * {
|
||||
@org.greenrobot.eventbus.Subscribe <methods>;
|
||||
}
|
||||
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
|
||||
|
||||
# Only required if you use AsyncExecutor
|
||||
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
|
||||
<init>(java.lang.Throwable);
|
||||
}
|
14
app/proguard/iconics.pro
Normal file
14
app/proguard/iconics.pro
Normal file
@ -0,0 +1,14 @@
|
||||
# Android iconics library - https://github.com/mikepenz/Android-Iconics
|
||||
# Warning: works ONLY with iconics > 1.0.0
|
||||
#
|
||||
# Tested on gradle config:
|
||||
#
|
||||
# compile 'com.mikepenz:iconics-core:1.7.1@aar'
|
||||
#
|
||||
|
||||
-keep class com.mikepenz.iconics.** { *; }
|
||||
-keep class com.mikepenz.community_material_typeface_library.CommunityMaterial
|
||||
-keep class com.mikepenz.fontawesome_typeface_library.FontAwesome
|
||||
-keep class com.mikepenz.google_material_typeface_library.GoogleMaterial
|
||||
-keep class com.mikepenz.meteocons_typeface_library.Meteoconcs
|
||||
-keep class com.mikepenz.octicons_typeface_library.Octicons
|
1
app/proguard/jsoup.pro
Normal file
1
app/proguard/jsoup.pro
Normal file
@ -0,0 +1 @@
|
||||
-keep class org.jsoup.**
|
48
app/proguard/mhttp.pro
Normal file
48
app/proguard/mhttp.pro
Normal file
@ -0,0 +1,48 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# By default, the flags in this file are appended to flags specified
|
||||
# in /Users/wangchao/Work/android-sdk/sdk/tools/proguard/proguard-android.txt
|
||||
# You can edit the include path and order by changing the proguardFiles
|
||||
# directive in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# Add any project specific keep options here:
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
-dontwarn im.wangchao.**
|
||||
-dontwarn okio.**
|
||||
-dontwarn javax.annotation.Nullable
|
||||
-dontwarn javax.annotation.ParametersAreNonnullByDefault
|
||||
-keep class im.wangchao.** { *; }
|
||||
-keep class **_HttpBinder { *; }
|
||||
-keepclasseswithmembernames class * {
|
||||
@im.wangchao.* <fields>;
|
||||
}
|
||||
-keepclasseswithmembernames class * {
|
||||
@im.wangchao.* <methods>;
|
||||
}
|
||||
-keepclassmembers class * implements java.io.Serializable {
|
||||
static final long serialVersionUID;
|
||||
private static final java.io.ObjectStreamField[] serialPersistentFields;
|
||||
!static !transient <fields>;
|
||||
private void writeObject(java.io.ObjectOutputStream);
|
||||
private void readObject(java.io.ObjectInputStream);
|
||||
java.lang.Object writeReplace();
|
||||
java.lang.Object readResolve();
|
||||
}
|
||||
# okhttp
|
||||
-dontwarn okhttp3.**
|
||||
-dontwarn okio.**
|
||||
-dontwarn javax.annotation.**
|
||||
-dontwarn org.conscrypt.**
|
||||
# A resource is loaded with a relative path so the package of this class must be preserved.
|
||||
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
|
||||
|
||||
# If you do not use Rx:
|
||||
-dontwarn rx.**
|
19
app/proguard/okhttp3.pro
Normal file
19
app/proguard/okhttp3.pro
Normal file
@ -0,0 +1,19 @@
|
||||
# JSR 305 annotations are for embedding nullability information.
|
||||
-dontwarn javax.annotation.**
|
||||
|
||||
# A resource is loaded with a relative path so the package of this class must be preserved.
|
||||
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
|
||||
|
||||
# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
|
||||
-dontwarn org.codehaus.mojo.animal_sniffer.*
|
||||
|
||||
# OkHttp platform used only on JVM and when Conscrypt dependency is available.
|
||||
-dontwarn okhttp3.internal.platform.ConscryptPlatform
|
||||
|
||||
# This is added for okhttp 3.1.2 bug fix as shown at https://github.com/square/okhttp/issues/2323
|
||||
-keepclassmembers class * implements javax.net.ssl.SSLSocketFactory {
|
||||
private javax.net.ssl.SSLSocketFactory delegate;
|
||||
}
|
||||
|
||||
-keepnames class sun.security.ssl.SSLContextImpl
|
||||
-keepnames class javax.net.ssl.SSLSocketFactory
|
1
app/proguard/szkolny-font.pro
Normal file
1
app/proguard/szkolny-font.pro
Normal file
@ -0,0 +1 @@
|
||||
-keep class com.mikepenz.szkolny_font_typeface_library.SzkolnyFont { *; }
|
21
app/proguard/wear.pro
Normal file
21
app/proguard/wear.pro
Normal file
@ -0,0 +1,21 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
@ -29,22 +29,22 @@
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".messages.MessagesComposeActivity"
|
||||
android:name="pl.szczodrzynski.edziennik.ui.modules.messages.MessagesComposeActivity"
|
||||
android:configChanges="orientation|screenSize"
|
||||
android:label="@string/messages_compose_title"
|
||||
android:theme="@style/AppTheme.Black" />
|
||||
<activity
|
||||
android:name=".activities.FeedbackActivity"
|
||||
android:name=".ui.modules.feedback.FeedbackActivity"
|
||||
android:configChanges="orientation|screenSize|keyboardHidden"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/AppTheme" />
|
||||
<activity
|
||||
android:name=".login.LoginActivity"
|
||||
android:name="pl.szczodrzynski.edziennik.ui.modules.login.LoginActivity"
|
||||
android:configChanges="orientation|screenSize"
|
||||
android:launchMode="singleTop"
|
||||
android:theme="@style/AppTheme.Light" />
|
||||
<activity
|
||||
android:name=".intro.ChangelogIntroActivity"
|
||||
android:name=".ui.modules.intro.ChangelogIntroActivity"
|
||||
android:configChanges="orientation|keyboardHidden"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/Theme.Intro" />
|
||||
@ -57,7 +57,7 @@
|
||||
|_| |_|_| \___|_.__/ \__,_|___/\___/
|
||||
-->
|
||||
<activity
|
||||
android:name=".activities.CrashActivity"
|
||||
android:name=".ui.modules.base.CrashActivity"
|
||||
android:configChanges="orientation|screenSize|keyboardHidden"
|
||||
android:process=":error_activity"
|
||||
android:theme="@style/DeadTheme" />
|
||||
@ -72,7 +72,7 @@
|
||||
|___/
|
||||
-->
|
||||
<activity
|
||||
android:name=".activities.CrashGtfoActivity"
|
||||
android:name=".ui.modules.base.CrashGtfoActivity"
|
||||
android:configChanges="orientation|screenSize|keyboardHidden"
|
||||
android:theme="@style/DeadTheme" />
|
||||
<activity
|
||||
@ -103,7 +103,7 @@
|
||||
android:theme="@style/AppTheme.NoDisplay" />
|
||||
|
||||
<activity
|
||||
android:name=".activities.SettingsLicenseActivity"
|
||||
android:name=".ui.modules.settings.SettingsLicenseActivity"
|
||||
android:configChanges="orientation|keyboardHidden"
|
||||
android:theme="@style/AppTheme" />
|
||||
|
||||
@ -113,14 +113,14 @@
|
||||
android:theme="@style/Base.Theme.AppCompat" />
|
||||
|
||||
<activity
|
||||
android:name=".activities.WebPushConfigActivity"
|
||||
android:name=".ui.modules.webpush.WebPushConfigActivity"
|
||||
android:configChanges="orientation|keyboardHidden"
|
||||
android:theme="@style/AppTheme.Dark" />
|
||||
|
||||
<activity
|
||||
android:name=".activities.CounterActivity"
|
||||
android:name=".ui.modules.home.CounterActivity"
|
||||
android:theme="@style/AppTheme.Black" />
|
||||
<activity android:name=".activities.QrScannerActivity" />
|
||||
<activity android:name=".ui.modules.webpush.QrScannerActivity" />
|
||||
|
||||
<provider
|
||||
android:name="androidx.core.content.FileProvider"
|
||||
@ -240,4 +240,4 @@
|
||||
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||
|
||||
</manifest>
|
||||
</manifest>
|
||||
|
@ -31,6 +31,38 @@
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h3>Wersja 3.1, 2019-09-29</h3>
|
||||
<ul>
|
||||
<li>Poprawiony interfejs zadań domowych.</li>
|
||||
<li>Librus: wyświetlanie komentarzy ocen.</li>
|
||||
<li>Librus: wyświetlanie nieobecności nauczycieli w Terminarzu.</li>
|
||||
<li>Librus: usprawniona synchronizacja ocen.</li>
|
||||
<li>Poprawki angielskiego tłumaczenia.</li>
|
||||
</ul>
|
||||
|
||||
<h3>Wersja 3.0.3, 2019-09-26</h3>
|
||||
<ul>
|
||||
<li>Librus: poprawka kilku błędów synchronizacji.</li>
|
||||
<li>Vulcan: prawidłowe oznaczanie wiadomości jako przeczytana.</li>
|
||||
<li>Vulcan: poprawiona synchronizacja wiadomości i frekwencji.</li>
|
||||
<li>Vulcan: poprawka błędów logowania.</li>
|
||||
</ul>
|
||||
|
||||
<h3>Wersja 3.0.2, 2019-09-24</h3>
|
||||
<ul>
|
||||
<li>Librus: pobieranie Bieżących ocen opisowych.</li>
|
||||
<li>Poprawki UI: kolor ikon paska statusu w jasnym motywie.</li>
|
||||
<li>Poprawka braku skanera QR do przekazywania powiadomień.</li>
|
||||
<li>Poprawka wyboru koloru i daty własnego wydarzenia, które crashowały aplikację.</li>
|
||||
</ul>
|
||||
|
||||
<h3>Wersja 3.0.1, 2019-09-19</h3>
|
||||
<ul>
|
||||
<li>Librus: Poprawa błędu synchronizacji.</li>
|
||||
<li>Poprawki UI związane z paskiem nawigacji.</li>
|
||||
<li>Mobidziennik: Pobieranie ocen w niektórych przedmiotach.</li>
|
||||
</ul>
|
||||
|
||||
<h3>Wersja 3.0, 2019-09-13</h3>
|
||||
<ul>
|
||||
<li><b>Nowy wygląd i sposób nawigacji</b> w całej aplikacji.</li>
|
||||
|
@ -66,18 +66,18 @@ import me.leolin.shortcutbadger.ShortcutBadger;
|
||||
import okhttp3.ConnectionSpec;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.TlsVersion;
|
||||
import pl.szczodrzynski.edziennik.activities.CrashActivity;
|
||||
import pl.szczodrzynski.edziennik.api.Edziennik;
|
||||
import pl.szczodrzynski.edziennik.api.Iuczniowie;
|
||||
import pl.szczodrzynski.edziennik.api.Librus;
|
||||
import pl.szczodrzynski.edziennik.api.Mobidziennik;
|
||||
import pl.szczodrzynski.edziennik.api.Vulcan;
|
||||
import pl.szczodrzynski.edziennik.datamodels.AppDb;
|
||||
import pl.szczodrzynski.edziennik.datamodels.DebugLog;
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile;
|
||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull;
|
||||
import pl.szczodrzynski.edziennik.models.AppConfig;
|
||||
import pl.szczodrzynski.edziennik.ui.modules.base.CrashActivity;
|
||||
import pl.szczodrzynski.edziennik.data.api.Edziennik;
|
||||
import pl.szczodrzynski.edziennik.data.api.Iuczniowie;
|
||||
import pl.szczodrzynski.edziennik.data.api.Librus;
|
||||
import pl.szczodrzynski.edziennik.data.api.Mobidziennik;
|
||||
import pl.szczodrzynski.edziennik.data.api.Vulcan;
|
||||
import pl.szczodrzynski.edziennik.data.db.AppDb;
|
||||
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.ProfileFull;
|
||||
import pl.szczodrzynski.edziennik.utils.models.AppConfig;
|
||||
import pl.szczodrzynski.edziennik.network.NetworkUtils;
|
||||
import pl.szczodrzynski.edziennik.network.TLSSocketFactory;
|
||||
import pl.szczodrzynski.edziennik.receivers.JobsCreator;
|
||||
@ -86,8 +86,8 @@ import pl.szczodrzynski.edziennik.utils.PermissionChecker;
|
||||
import pl.szczodrzynski.edziennik.utils.Themes;
|
||||
import pl.szczodrzynski.edziennik.utils.Utils;
|
||||
|
||||
import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_MOBIDZIENNIK;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_VULCAN;
|
||||
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 {
|
||||
private static final String TAG = "App";
|
||||
@ -351,7 +351,7 @@ public class App extends androidx.multidex.MultiDexApplication {
|
||||
.setIcon(Icon.createWithResource(this, R.mipmap.ic_shortcut_homework))
|
||||
//.setIcon(getDesktopIconFromIconics(SzkolnyFont.Icon.szf_file_document_edit))
|
||||
.setIntent(new Intent(Intent.ACTION_MAIN, null, this, MainActivity.class)
|
||||
.putExtra("fragmentId", MainActivity.DRAWER_ITEM_HOMEWORKS))
|
||||
.putExtra("fragmentId", MainActivity.DRAWER_ITEM_HOMEWORK))
|
||||
.build();
|
||||
|
||||
ShortcutInfo shortcutMessages = new ShortcutInfo.Builder(mContext, "item_messages")
|
||||
|
@ -11,8 +11,9 @@ import com.google.gson.JsonArray
|
||||
import com.google.gson.JsonElement
|
||||
import com.google.gson.JsonObject
|
||||
import im.wangchao.mhttp.Response
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
||||
import pl.szczodrzynski.edziennik.datamodels.Teacher
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||
import pl.szczodrzynski.navlib.R
|
||||
import pl.szczodrzynski.navlib.crc16
|
||||
import pl.szczodrzynski.navlib.getColorFromRes
|
||||
import java.text.SimpleDateFormat
|
||||
|
@ -19,7 +19,7 @@ import com.mikepenz.iconics.typeface.library.community.material.CommunityMateria
|
||||
import com.mikepenz.iconics.typeface.library.szkolny.font.SzkolnyFont
|
||||
import com.mikepenz.materialdrawer.model.ProfileSettingDrawerItem
|
||||
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem
|
||||
import pl.szczodrzynski.edziennik.datamodels.Metadata.*
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.*
|
||||
import pl.szczodrzynski.edziennik.utils.Themes
|
||||
import pl.szczodrzynski.navlib.NavView
|
||||
import pl.szczodrzynski.navlib.SystemBarsUtil
|
||||
@ -30,6 +30,7 @@ import pl.szczodrzynski.navlib.drawer.items.DrawerPrimaryItem
|
||||
import pl.szczodrzynski.navlib.drawer.items.withAppTitle
|
||||
import pl.szczodrzynski.navlib.getColorFromAttr
|
||||
import androidx.appcompat.widget.PopupMenu
|
||||
import androidx.core.graphics.ColorUtils
|
||||
import androidx.navigation.NavOptions
|
||||
import com.danimahardhika.cafebar.CafeBar
|
||||
import com.mikepenz.iconics.IconicsColor
|
||||
@ -40,21 +41,35 @@ import com.mikepenz.materialdrawer.model.ProfileDrawerItem
|
||||
import com.mikepenz.materialdrawer.model.interfaces.IProfile
|
||||
import pl.droidsonroids.gif.GifDrawable
|
||||
import pl.szczodrzynski.edziennik.App.APP_URL
|
||||
import pl.szczodrzynski.edziennik.api.AppError
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.*
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback
|
||||
import pl.szczodrzynski.edziennik.data.api.AppError
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.*
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback
|
||||
import pl.szczodrzynski.edziennik.databinding.ActivitySzkolnyBinding
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull
|
||||
import pl.szczodrzynski.edziennik.dialogs.ChangelogDialog
|
||||
import pl.szczodrzynski.edziennik.fragments.*
|
||||
import pl.szczodrzynski.edziennik.login.LoginActivity
|
||||
import pl.szczodrzynski.edziennik.messages.MessagesDetailsFragment
|
||||
import pl.szczodrzynski.edziennik.messages.MessagesFragment
|
||||
import pl.szczodrzynski.edziennik.models.NavTarget
|
||||
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.ProfileFull
|
||||
import pl.szczodrzynski.edziennik.ui.dialogs.changelog.ChangelogDialog
|
||||
import pl.szczodrzynski.edziennik.ui.modules.homework.HomeworkFragment
|
||||
import pl.szczodrzynski.edziennik.ui.modules.login.LoginActivity
|
||||
import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesDetailsFragment
|
||||
import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesFragment
|
||||
import pl.szczodrzynski.edziennik.utils.models.NavTarget
|
||||
import pl.szczodrzynski.edziennik.network.ServerRequest
|
||||
import pl.szczodrzynski.edziennik.sync.SyncJob
|
||||
import pl.szczodrzynski.edziennik.ui.modules.agenda.AgendaFragment
|
||||
import pl.szczodrzynski.edziennik.ui.modules.announcements.AnnouncementsFragment
|
||||
import pl.szczodrzynski.edziennik.ui.modules.attendance.AttendanceFragment
|
||||
import pl.szczodrzynski.edziennik.ui.modules.base.DebugFragment
|
||||
import pl.szczodrzynski.edziennik.ui.modules.feedback.FeedbackFragment
|
||||
import pl.szczodrzynski.edziennik.ui.modules.feedback.HelpFragment
|
||||
import pl.szczodrzynski.edziennik.ui.modules.grades.editor.GradesEditorFragment
|
||||
import pl.szczodrzynski.edziennik.ui.modules.grades.GradesFragment
|
||||
import pl.szczodrzynski.edziennik.ui.modules.home.HomeFragment
|
||||
import pl.szczodrzynski.edziennik.ui.modules.behaviour.BehaviourFragment
|
||||
import pl.szczodrzynski.edziennik.ui.modules.notifications.NotificationsFragment
|
||||
import pl.szczodrzynski.edziennik.ui.modules.settings.ProfileManagerFragment
|
||||
import pl.szczodrzynski.edziennik.ui.modules.settings.SettingsNewFragment
|
||||
import pl.szczodrzynski.edziennik.ui.modules.timetable.TimetableFragment
|
||||
import pl.szczodrzynski.edziennik.utils.SwipeRefreshLayoutNoTouch
|
||||
import pl.szczodrzynski.edziennik.utils.Utils
|
||||
import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem
|
||||
@ -82,9 +97,9 @@ class MainActivity : AppCompatActivity() {
|
||||
const val DRAWER_ITEM_AGENDA = 12
|
||||
const val DRAWER_ITEM_GRADES = 13
|
||||
const val DRAWER_ITEM_MESSAGES = 17
|
||||
const val DRAWER_ITEM_HOMEWORKS = 14
|
||||
const val DRAWER_ITEM_NOTICES = 15
|
||||
const val DRAWER_ITEM_ATTENDANCES = 16
|
||||
const val DRAWER_ITEM_HOMEWORK = 14
|
||||
const val DRAWER_ITEM_BEHAVIOUR = 15
|
||||
const val DRAWER_ITEM_ATTENDANCE = 16
|
||||
const val DRAWER_ITEM_ANNOUNCEMENTS = 18
|
||||
const val DRAWER_ITEM_NOTIFICATIONS = 20
|
||||
const val DRAWER_ITEM_SETTINGS = 101
|
||||
@ -108,17 +123,17 @@ class MainActivity : AppCompatActivity() {
|
||||
.isStatic(true)
|
||||
.withPopToHome(false)
|
||||
|
||||
list += NavTarget(DRAWER_ITEM_TIMETABLE, R.string.menu_timetable, RegisterTimetableFragment::class)
|
||||
list += NavTarget(DRAWER_ITEM_TIMETABLE, R.string.menu_timetable, TimetableFragment::class)
|
||||
.withIcon(CommunityMaterial.Icon2.cmd_timetable)
|
||||
.withBadgeTypeId(TYPE_LESSON_CHANGE)
|
||||
.isInDrawer(true)
|
||||
|
||||
list += NavTarget(DRAWER_ITEM_AGENDA, R.string.menu_agenda, RegisterAgendaDefaultFragment::class)
|
||||
list += NavTarget(DRAWER_ITEM_AGENDA, R.string.menu_agenda, AgendaFragment::class)
|
||||
.withIcon(CommunityMaterial.Icon.cmd_calendar)
|
||||
.withBadgeTypeId(TYPE_EVENT)
|
||||
.isInDrawer(true)
|
||||
|
||||
list += NavTarget(DRAWER_ITEM_GRADES, R.string.menu_grades, RegisterGradesFragment::class)
|
||||
list += NavTarget(DRAWER_ITEM_GRADES, R.string.menu_grades, GradesFragment::class)
|
||||
.withIcon(CommunityMaterial.Icon2.cmd_numeric_5_box)
|
||||
.withBadgeTypeId(TYPE_GRADE)
|
||||
.isInDrawer(true)
|
||||
@ -128,29 +143,29 @@ class MainActivity : AppCompatActivity() {
|
||||
.withBadgeTypeId(TYPE_MESSAGE)
|
||||
.isInDrawer(true)
|
||||
|
||||
list += NavTarget(DRAWER_ITEM_HOMEWORKS, R.string.menu_homework, RegisterHomeworksFragment::class)
|
||||
list += NavTarget(DRAWER_ITEM_HOMEWORK, R.string.menu_homework, HomeworkFragment::class)
|
||||
.withIcon(SzkolnyFont.Icon.szf_file_document_edit)
|
||||
.withBadgeTypeId(TYPE_HOMEWORK)
|
||||
.isInDrawer(true)
|
||||
|
||||
list += NavTarget(DRAWER_ITEM_NOTICES, R.string.menu_notices, RegisterNoticesFragment::class)
|
||||
list += NavTarget(DRAWER_ITEM_BEHAVIOUR, R.string.menu_notices, BehaviourFragment::class)
|
||||
.withIcon(CommunityMaterial.Icon2.cmd_message_alert)
|
||||
.withBadgeTypeId(TYPE_NOTICE)
|
||||
.isInDrawer(true)
|
||||
|
||||
list += NavTarget(DRAWER_ITEM_ATTENDANCES, R.string.menu_attendances, RegisterAttendancesFragment::class)
|
||||
list += NavTarget(DRAWER_ITEM_ATTENDANCE, R.string.menu_attendance, AttendanceFragment::class)
|
||||
.withIcon(CommunityMaterial.Icon.cmd_calendar_remove)
|
||||
.withBadgeTypeId(TYPE_ATTENDANCE)
|
||||
.isInDrawer(true)
|
||||
|
||||
list += NavTarget(DRAWER_ITEM_ANNOUNCEMENTS, R.string.menu_announcements, RegisterAnnouncementsFragment::class)
|
||||
list += NavTarget(DRAWER_ITEM_ANNOUNCEMENTS, R.string.menu_announcements, AnnouncementsFragment::class)
|
||||
.withIcon(CommunityMaterial.Icon.cmd_bulletin_board)
|
||||
.withBadgeTypeId(TYPE_ANNOUNCEMENT)
|
||||
.isInDrawer(true)
|
||||
|
||||
|
||||
// static drawer items
|
||||
list += NavTarget(DRAWER_ITEM_NOTIFICATIONS, R.string.menu_notifications, RegisterNotificationsFragment::class)
|
||||
list += NavTarget(DRAWER_ITEM_NOTIFICATIONS, R.string.menu_notifications, NotificationsFragment::class)
|
||||
.withIcon(CommunityMaterial.Icon.cmd_bell_ring)
|
||||
.isInDrawer(true)
|
||||
.isStatic(true)
|
||||
@ -229,8 +244,8 @@ class MainActivity : AppCompatActivity() {
|
||||
drawer.init(this@MainActivity)
|
||||
|
||||
SystemBarsUtil(this@MainActivity).run {
|
||||
paddingByKeyboard = b.navView
|
||||
appFullscreen = true
|
||||
//paddingByKeyboard = b.navView
|
||||
appFullscreen = false
|
||||
statusBarColor = getColorFromAttr(context, android.R.attr.colorBackground)
|
||||
statusBarDarker = false
|
||||
statusBarFallbackLight = COLOR_HALF_TRANSPARENT
|
||||
@ -239,6 +254,16 @@ class MainActivity : AppCompatActivity() {
|
||||
|
||||
b.navView.configSystemBarsUtil(this)
|
||||
|
||||
// fix for setting status bar color to window color, outside of navlib
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
window.statusBarColor = statusBarColor
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && ColorUtils.calculateLuminance(statusBarColor) > 0.6) {
|
||||
window.decorView.systemUiVisibility = window.decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
|
||||
}
|
||||
|
||||
// TODO fix navlib navbar detection, orientation change issues, status bar color setting if not fullscreen
|
||||
|
||||
commit()
|
||||
}
|
||||
|
||||
@ -511,9 +536,9 @@ class MainActivity : AppCompatActivity() {
|
||||
DRAWER_ITEM_TIMETABLE -> FEATURE_TIMETABLE
|
||||
DRAWER_ITEM_AGENDA -> FEATURE_AGENDA
|
||||
DRAWER_ITEM_GRADES -> FEATURE_GRADES
|
||||
DRAWER_ITEM_HOMEWORKS -> FEATURE_HOMEWORKS
|
||||
DRAWER_ITEM_NOTICES -> FEATURE_NOTICES
|
||||
DRAWER_ITEM_ATTENDANCES -> FEATURE_ATTENDANCES
|
||||
DRAWER_ITEM_HOMEWORK -> FEATURE_HOMEWORK
|
||||
DRAWER_ITEM_BEHAVIOUR -> FEATURE_NOTICES
|
||||
DRAWER_ITEM_ATTENDANCE -> FEATURE_ATTENDANCE
|
||||
DRAWER_ITEM_MESSAGES -> when (MessagesFragment.pageSelection) {
|
||||
1 -> FEATURE_MESSAGES_OUTBOX
|
||||
else -> FEATURE_MESSAGES_INBOX
|
||||
@ -527,9 +552,9 @@ class MainActivity : AppCompatActivity() {
|
||||
DRAWER_ITEM_TIMETABLE -> R.string.sync_feature_timetable
|
||||
DRAWER_ITEM_AGENDA -> R.string.sync_feature_agenda
|
||||
DRAWER_ITEM_GRADES -> R.string.sync_feature_grades
|
||||
DRAWER_ITEM_HOMEWORKS -> R.string.sync_feature_homeworks
|
||||
DRAWER_ITEM_NOTICES -> R.string.sync_feature_notices
|
||||
DRAWER_ITEM_ATTENDANCES -> R.string.sync_feature_attendances
|
||||
DRAWER_ITEM_HOMEWORK -> R.string.sync_feature_homework
|
||||
DRAWER_ITEM_BEHAVIOUR -> R.string.sync_feature_notices
|
||||
DRAWER_ITEM_ATTENDANCE -> R.string.sync_feature_attendance
|
||||
DRAWER_ITEM_MESSAGES -> when (MessagesFragment.pageSelection) {
|
||||
1 -> R.string.sync_feature_messages_outbox
|
||||
else -> R.string.sync_feature_messages_inbox
|
||||
@ -729,6 +754,9 @@ class MainActivity : AppCompatActivity() {
|
||||
drawer.close()
|
||||
drawer.setSelection(target.id, fireOnClick = false)
|
||||
navView.toolbar.setTitle(target.title ?: target.name)
|
||||
navView.bottomBar.fabEnable = false
|
||||
navView.bottomBar.fabExtended = false
|
||||
navView.bottomBar.setFabOnClickListener(null)
|
||||
|
||||
Log.d("NavDebug", "Navigating from ${navTarget.fragmentClass?.java?.simpleName} to ${target.fragmentClass?.java?.simpleName}")
|
||||
|
||||
@ -837,7 +865,19 @@ class MainActivity : AppCompatActivity() {
|
||||
fun gainAttention() {
|
||||
b.navView.postDelayed({
|
||||
navView.gainAttentionOnBottomBar()
|
||||
}, 2000)
|
||||
}
|
||||
|
||||
fun gainAttentionFAB() {
|
||||
navView.bottomBar.fabExtended = false
|
||||
|
||||
b.navView.postDelayed({
|
||||
navView.bottomBar.fabExtended = true
|
||||
}, 1000)
|
||||
|
||||
b.navView.postDelayed({
|
||||
navView.bottomBar.fabExtended = false
|
||||
}, 3000)
|
||||
}
|
||||
|
||||
/* _____ _ _
|
||||
|
@ -16,9 +16,9 @@ import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull;
|
||||
import pl.szczodrzynski.edziennik.models.Date;
|
||||
import pl.szczodrzynski.edziennik.models.Time;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||
import pl.szczodrzynski.edziennik.receivers.BootReceiver;
|
||||
import pl.szczodrzynski.edziennik.sync.SyncJob;
|
||||
import pl.szczodrzynski.edziennik.sync.SyncService;
|
||||
@ -221,7 +221,7 @@ public class Notifier {
|
||||
| . ` |/ _ \| __| | _| |/ __/ _` | __| |/ _ \| '_ \
|
||||
| |\ | (_) | |_| | | | | (_| (_| | |_| | (_) | | | |
|
||||
|_| \_|\___/ \__|_|_| |_|\___\__,_|\__|_|\___/|_| |*/
|
||||
public void add(pl.szczodrzynski.edziennik.models.Notification notification) {
|
||||
public void add(pl.szczodrzynski.edziennik.utils.models.Notification notification) {
|
||||
app.appConfig.notifications.add(notification);
|
||||
}
|
||||
|
||||
@ -235,8 +235,8 @@ public class Notifier {
|
||||
}
|
||||
|
||||
int unreadCount = 0;
|
||||
List<pl.szczodrzynski.edziennik.models.Notification> notificationList = new ArrayList<>();
|
||||
for (pl.szczodrzynski.edziennik.models.Notification notification: app.appConfig.notifications) {
|
||||
List<pl.szczodrzynski.edziennik.utils.models.Notification> notificationList = new ArrayList<>();
|
||||
for (pl.szczodrzynski.edziennik.utils.models.Notification notification: app.appConfig.notifications) {
|
||||
if (!notification.notified) {
|
||||
notification.seen = false;
|
||||
notification.notified = true;
|
||||
@ -250,7 +250,7 @@ public class Notifier {
|
||||
}
|
||||
}
|
||||
|
||||
for (pl.szczodrzynski.edziennik.models.Notification notification: notificationList) {
|
||||
for (pl.szczodrzynski.edziennik.utils.models.Notification notification: notificationList) {
|
||||
Intent intent = new Intent(app, MainActivity.class);
|
||||
notification.fillIntent(intent);
|
||||
PendingIntent pendingIntent = PendingIntent.getActivity(app, notification.id, intent, 0);
|
||||
@ -258,9 +258,9 @@ public class Notifier {
|
||||
// title, text, type, date
|
||||
.setContentTitle(notification.title)
|
||||
.setContentText(notification.text)
|
||||
.setSubText(pl.szczodrzynski.edziennik.models.Notification.stringType(app, notification.type))
|
||||
.setSubText(pl.szczodrzynski.edziennik.utils.models.Notification.stringType(app, notification.type))
|
||||
.setWhen(notification.addedDate)
|
||||
.setTicker(app.getString(R.string.notification_ticker_format, pl.szczodrzynski.edziennik.models.Notification.stringType(app, notification.type)))
|
||||
.setTicker(app.getString(R.string.notification_ticker_format, pl.szczodrzynski.edziennik.utils.models.Notification.stringType(app, notification.type)))
|
||||
// icon, color, lights, priority
|
||||
.setSmallIcon(R.drawable.ic_notification)
|
||||
.setColor(notificationColor)
|
||||
@ -349,7 +349,7 @@ public class Notifier {
|
||||
}
|
||||
|
||||
public void dump() {
|
||||
for (pl.szczodrzynski.edziennik.models.Notification notification: app.appConfig.notifications) {
|
||||
for (pl.szczodrzynski.edziennik.utils.models.Notification notification: app.appConfig.notifications) {
|
||||
Log.d(TAG, "Profile"+notification.profileId+" Notification from "+ Date.fromMillis(notification.addedDate).getFormattedString()+" "+ Time.fromMillis(notification.addedDate).getStringHMS()+" - "+notification.text);
|
||||
}
|
||||
}
|
||||
|
@ -28,22 +28,22 @@ import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import pl.szczodrzynski.edziennik.datamodels.EventFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.LessonChange;
|
||||
import pl.szczodrzynski.edziennik.datamodels.LessonFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile;
|
||||
import pl.szczodrzynski.edziennik.fragments.HomeFragment;
|
||||
import pl.szczodrzynski.edziennik.models.Date;
|
||||
import pl.szczodrzynski.edziennik.models.ItemWidgetTimetableModel;
|
||||
import pl.szczodrzynski.edziennik.models.Time;
|
||||
import pl.szczodrzynski.edziennik.models.Week;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.events.EventFull;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonFull;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile;
|
||||
import pl.szczodrzynski.edziennik.ui.modules.home.HomeFragment;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||
import pl.szczodrzynski.edziennik.utils.models.ItemWidgetTimetableModel;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Week;
|
||||
import pl.szczodrzynski.edziennik.widgets.WidgetConfig;
|
||||
import pl.szczodrzynski.edziennik.sync.SyncJob;
|
||||
import pl.szczodrzynski.edziennik.widgets.timetable.LessonDetailsActivity;
|
||||
import pl.szczodrzynski.edziennik.widgets.timetable.WidgetTimetableService;
|
||||
|
||||
import static pl.szczodrzynski.edziennik.ExtensionsKt.filterOutArchived;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_HOMEWORK;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_HOMEWORK;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.bs;
|
||||
|
||||
|
||||
|
@ -1,9 +0,0 @@
|
||||
package pl.szczodrzynski.edziennik.api.interfaces;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import pl.szczodrzynski.edziennik.datamodels.MessageFull;
|
||||
|
||||
public interface MessageListCallback {
|
||||
void onSuccess(List<MessageFull> messageList);
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
package pl.szczodrzynski.edziennik.api.interfaces;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import pl.szczodrzynski.edziennik.datamodels.Teacher;
|
||||
|
||||
public interface RecipientListGetCallback {
|
||||
void onSuccess(List<Teacher> teacherList);
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Kuba Szczodrzyński 2019-9-21.
|
||||
*/
|
||||
|
||||
package pl.szczodrzynski.edziennik.api.v2
|
||||
|
||||
import com.crashlytics.android.Crashlytics
|
||||
import pl.szczodrzynski.edziennik.api.AppError
|
||||
import pl.szczodrzynski.edziennik.api.v2.models.Data
|
||||
|
||||
open class Api(open val data: Data) {
|
||||
fun finishWithError(error: AppError) {
|
||||
try {
|
||||
data.saveData()
|
||||
} catch (e: Exception) {
|
||||
Crashlytics.logException(e)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -8,7 +8,6 @@ import android.app.Service
|
||||
import android.content.Intent
|
||||
import android.os.IBinder
|
||||
import android.util.Log
|
||||
import androidx.core.app.NotificationCompat
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
@ -21,8 +20,8 @@ import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikInterface
|
||||
import pl.szczodrzynski.edziennik.api.v2.librus.Librus
|
||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiTask
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||
import kotlin.math.min
|
||||
|
||||
class ApiService : Service() {
|
||||
|
@ -6,17 +6,16 @@ package pl.szczodrzynski.edziennik.api.v2
|
||||
|
||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_AGENDA
|
||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_ANNOUNCEMENTS
|
||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_ATTENDANCES
|
||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_ATTENDANCE
|
||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_GRADES
|
||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_HOME
|
||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_HOMEWORKS
|
||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_HOMEWORK
|
||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_MESSAGES
|
||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_NOTICES
|
||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_BEHAVIOUR
|
||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_TIMETABLE
|
||||
import pl.szczodrzynski.edziennik.datamodels.Message.TYPE_RECEIVED
|
||||
import pl.szczodrzynski.edziennik.datamodels.Message.TYPE_SENT
|
||||
import pl.szczodrzynski.edziennik.messages.MessagesFragment
|
||||
import pl.szczodrzynski.edziennik.messages.MessagesListFragment
|
||||
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.ui.modules.messages.MessagesFragment
|
||||
|
||||
const val FEATURE_ALL = 0
|
||||
const val FEATURE_TIMETABLE = 1
|
||||
@ -77,9 +76,9 @@ object Features {
|
||||
TYPE_SENT -> listOf(FEATURE_MESSAGES_OUTBOX)
|
||||
else -> listOf(FEATURE_MESSAGES_INBOX, FEATURE_MESSAGES_OUTBOX)
|
||||
}
|
||||
DRAWER_ITEM_HOMEWORKS -> listOf(FEATURE_HOMEWORK)
|
||||
DRAWER_ITEM_NOTICES -> listOf(FEATURE_NOTICES)
|
||||
DRAWER_ITEM_ATTENDANCES -> listOf(FEATURE_ATTENDANCES)
|
||||
DRAWER_ITEM_HOMEWORK -> listOf(FEATURE_HOMEWORK)
|
||||
DRAWER_ITEM_BEHAVIOUR -> listOf(FEATURE_NOTICES)
|
||||
DRAWER_ITEM_ATTENDANCE -> listOf(FEATURE_ATTENDANCES)
|
||||
DRAWER_ITEM_ANNOUNCEMENTS -> listOf(FEATURE_ANNOUNCEMENTS)
|
||||
else -> getAllFeatures()
|
||||
} + getAllNecessary()
|
||||
|
@ -6,16 +6,17 @@ package pl.szczodrzynski.edziennik.api.v2.librus
|
||||
|
||||
import android.util.Log
|
||||
import pl.szczodrzynski.edziennik.App
|
||||
import pl.szczodrzynski.edziennik.R
|
||||
import pl.szczodrzynski.edziennik.api.v2.*
|
||||
import pl.szczodrzynski.edziennik.api.v2.CODE_INTERNAL_LIBRUS_ACCOUNT_410
|
||||
import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_NOT_NEEDED
|
||||
import pl.szczodrzynski.edziennik.api.v2.endpoints
|
||||
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikCallback
|
||||
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikInterface
|
||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus
|
||||
import pl.szczodrzynski.edziennik.api.v2.librus.login.*
|
||||
import pl.szczodrzynski.edziennik.api.v2.librusLoginMethods
|
||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||
import pl.szczodrzynski.edziennik.api.v2.models.Endpoint
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||
import pl.szczodrzynski.edziennik.utils.Utils.d
|
||||
|
||||
class Librus(val app: App, val profile: Profile?, val loginStore: LoginStore, val callback: EdziennikCallback) : EdziennikInterface {
|
||||
|
@ -5,13 +5,9 @@
|
||||
package pl.szczodrzynski.edziennik.api.v2.librus
|
||||
|
||||
import pl.szczodrzynski.edziennik.R
|
||||
import pl.szczodrzynski.edziennik.api.v2.*
|
||||
import pl.szczodrzynski.edziennik.api.v2.ENDPOINT_LIBRUS_API_ME
|
||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus
|
||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApiMe
|
||||
import pl.szczodrzynski.edziennik.api.v2.librus.login.LoginLibrusApi
|
||||
import pl.szczodrzynski.edziennik.api.v2.librus.login.LoginLibrusMessages
|
||||
import pl.szczodrzynski.edziennik.api.v2.librus.login.LoginLibrusPortal
|
||||
import pl.szczodrzynski.edziennik.api.v2.librus.login.LoginLibrusSynergia
|
||||
import pl.szczodrzynski.edziennik.utils.Utils
|
||||
|
||||
class LibrusEndpoints(val data: DataLibrus, val onSuccess: () -> Unit) {
|
||||
|
@ -1,170 +0,0 @@
|
||||
package pl.szczodrzynski.edziennik.api.v2.librus
|
||||
|
||||
import android.content.Context
|
||||
import pl.szczodrzynski.edziennik.App
|
||||
import pl.szczodrzynski.edziennik.api.AppError
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.*
|
||||
import pl.szczodrzynski.edziennik.api.v2.*
|
||||
import pl.szczodrzynski.edziennik.api.v2.librus.firstlogin.FirstLoginLibrus
|
||||
import pl.szczodrzynski.edziennik.api.v2.librus.firstlogin.FirstLoginSynergia
|
||||
import pl.szczodrzynski.edziennik.api.v2.models.Data
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
||||
import pl.szczodrzynski.edziennik.datamodels.MessageFull
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull
|
||||
import pl.szczodrzynski.edziennik.messages.MessagesComposeInfo
|
||||
import pl.szczodrzynski.edziennik.models.Endpoint
|
||||
import java.lang.Exception
|
||||
|
||||
class LibrusOld(val app: App, val profile: Profile?, val loginStore: LoginStore) : OldEdziennikInterface {
|
||||
private val TAG = "librus.Librus"
|
||||
|
||||
lateinit var syncCallback: SyncCallback
|
||||
lateinit var featureList: ArrayList<Int>
|
||||
lateinit var data: Data
|
||||
var onLogin: (() -> Unit)? = null
|
||||
val internalErrorList = ArrayList<Int>()
|
||||
|
||||
fun isError(error: AppError?): Boolean {
|
||||
if (error == null)
|
||||
return false
|
||||
syncCallback.onError(null, error)
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
/* _ _ _
|
||||
| | (_) |
|
||||
| | _| |__ _ __ _ _ ___
|
||||
| | | | '_ \| '__| | | / __|
|
||||
| |____| | |_) | | | |_| \__ \
|
||||
|______|_|_.__/|_| \__,_|__*/
|
||||
|
||||
private fun firstLoginLibrus() {
|
||||
FirstLoginLibrus(app, loginStore, syncCallback) { profileList ->
|
||||
syncCallback.onLoginFirst(profileList, loginStore)
|
||||
}
|
||||
}
|
||||
private fun synergiaTokenExtractor() {
|
||||
if (profile == null) {
|
||||
throw Exception("Profile may not be null")
|
||||
}
|
||||
|
||||
}
|
||||
/* _____ _
|
||||
/ ____| (_)
|
||||
| (___ _ _ _ __ ___ _ __ __ _ _ __ _
|
||||
\___ \| | | | '_ \ / _ \ '__/ _` | |/ _` |
|
||||
____) | |_| | | | | __/ | | (_| | | (_| |
|
||||
|_____/ \__, |_| |_|\___|_| \__, |_|\__,_|
|
||||
__/ | __/ |
|
||||
|___/ |__*/
|
||||
private fun loginSynergia() {
|
||||
|
||||
}
|
||||
private fun firstLoginSynergia() {
|
||||
FirstLoginSynergia(app, loginStore, syncCallback) { profileList ->
|
||||
syncCallback.onLoginFirst(profileList, loginStore)
|
||||
}
|
||||
}
|
||||
/* _ _____ _______
|
||||
| |/ ____|__ __|
|
||||
| | (___ | |
|
||||
_ | |\___ \ | |
|
||||
| |__| |____) | | |
|
||||
\____/|_____/ |*/
|
||||
private fun loginJst() {
|
||||
|
||||
}
|
||||
|
||||
private fun wrapCallback(callback: SyncCallback): SyncCallback {
|
||||
return object : SyncCallback {
|
||||
override fun onSuccess(activityContext: Context?, profileFull: ProfileFull?) {
|
||||
callback.onSuccess(activityContext, profileFull)
|
||||
}
|
||||
|
||||
override fun onProgress(progressStep: Int) {
|
||||
callback.onProgress(progressStep)
|
||||
}
|
||||
|
||||
override fun onActionStarted(stringResId: Int) {
|
||||
callback.onActionStarted(stringResId)
|
||||
}
|
||||
|
||||
override fun onLoginFirst(profileList: MutableList<Profile>?, loginStore: LoginStore?) {
|
||||
callback.onLoginFirst(profileList, loginStore)
|
||||
}
|
||||
|
||||
override fun onError(activityContext: Context?, error: AppError) {
|
||||
when (error.errorCode) {
|
||||
in internalErrorList -> {
|
||||
// finish immediately if the same error occurs twice during the same sync
|
||||
callback.onError(activityContext, error)
|
||||
}
|
||||
/* CODE_INTERNAL_LIBRUS_ACCOUNT_410 -> {
|
||||
internalErrorList.add(error.errorCode)
|
||||
loginStore.removeLoginData("refreshToken") // force a clean login
|
||||
//loginLibrus()
|
||||
}*/
|
||||
else -> callback.onError(activityContext, error)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun login(callback: SyncCallback) {
|
||||
this.internalErrorList.clear()
|
||||
this.syncCallback = wrapCallback(callback)
|
||||
when (loginStore.mode) {
|
||||
LOGIN_MODE_LIBRUS_EMAIL -> {
|
||||
//loginLibrus()
|
||||
}
|
||||
LOGIN_MODE_LIBRUS_SYNERGIA -> {
|
||||
|
||||
}
|
||||
LOGIN_MODE_LIBRUS_JST -> {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun getData() {
|
||||
|
||||
}
|
||||
|
||||
override fun sync(activityContext: Context, callback: SyncCallback, profileId: Int, profile: Profile?, loginStore: LoginStore) {
|
||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
override fun syncMessages(activityContext: Context, errorCallback: SyncCallback, profile: ProfileFull) {
|
||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
override fun syncFeature(activityContext: Context, callback: SyncCallback, profile: ProfileFull, vararg featureList: Int) {
|
||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
override fun getMessage(activityContext: Context, errorCallback: SyncCallback, profile: ProfileFull, message: MessageFull, messageCallback: MessageGetCallback) {
|
||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
override fun getAttachment(activityContext: Context, errorCallback: SyncCallback, profile: ProfileFull, message: MessageFull, attachmentId: Long, attachmentCallback: AttachmentGetCallback) {
|
||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
override fun getRecipientList(activityContext: Context, errorCallback: SyncCallback, profile: ProfileFull, recipientListGetCallback: RecipientListGetCallback) {
|
||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
override fun getComposeInfo(profile: ProfileFull): MessagesComposeInfo {
|
||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
override fun getConfigurableEndpoints(profile: Profile?): MutableMap<String, Endpoint> {
|
||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
override fun isEndpointEnabled(profile: Profile?, defaultActive: Boolean, name: String?): Boolean {
|
||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||
}
|
||||
}
|
@ -4,21 +4,14 @@
|
||||
|
||||
package pl.szczodrzynski.edziennik.api.v2.librus
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import com.google.gson.JsonObject
|
||||
import pl.szczodrzynski.edziennik.App
|
||||
import pl.szczodrzynski.edziennik.api.AppError
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.ProgressCallback
|
||||
import pl.szczodrzynski.edziennik.api.v2.*
|
||||
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikCallback
|
||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus
|
||||
import pl.szczodrzynski.edziennik.api.v2.librus.login.LoginLibrus
|
||||
import pl.szczodrzynski.edziennik.api.v2.librus.login.LoginLibrusPortal
|
||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
||||
import pl.szczodrzynski.edziennik.utils.Utils.d
|
||||
import pl.szczodrzynski.edziennik.api.v2.ApiService
|
||||
import pl.szczodrzynski.edziennik.api.v2.LOGIN_MODE_LIBRUS_EMAIL
|
||||
import pl.szczodrzynski.edziennik.api.v2.LOGIN_TYPE_LIBRUS
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||
|
||||
class LibrusTest(val app: App) {
|
||||
companion object {
|
||||
|
@ -13,8 +13,8 @@ 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.models.Data
|
||||
import pl.szczodrzynski.edziennik.currentTimeUnix
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||
import pl.szczodrzynski.edziennik.isNotNullNorEmpty
|
||||
|
||||
class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app, profile, loginStore) {
|
||||
|
@ -4,22 +4,13 @@
|
||||
|
||||
package pl.szczodrzynski.edziennik.api.v2.librus.data
|
||||
|
||||
import com.google.gson.JsonNull
|
||||
import com.google.gson.JsonObject
|
||||
import im.wangchao.mhttp.Request
|
||||
import im.wangchao.mhttp.Response
|
||||
import im.wangchao.mhttp.callback.JsonCallbackHandler
|
||||
import io.fabric.sdk.android.services.network.HttpRequest.post
|
||||
import pl.szczodrzynski.edziennik.api.AppError
|
||||
import pl.szczodrzynski.edziennik.api.AppError.CODE_MAINTENANCE
|
||||
import pl.szczodrzynski.edziennik.api.AppError.CODE_OTHER
|
||||
import pl.szczodrzynski.edziennik.api.v2.*
|
||||
import pl.szczodrzynski.edziennik.api.v2.librus.login.LoginLibrusSynergia
|
||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||
import pl.szczodrzynski.edziennik.getString
|
||||
import pl.szczodrzynski.edziennik.utils.Utils.d
|
||||
import java.lang.Exception
|
||||
import java.net.HttpURLConnection
|
||||
import java.net.HttpURLConnection.*
|
||||
|
||||
open class LibrusApi(open val data: DataLibrus) {
|
||||
|
@ -1,10 +1,11 @@
|
||||
package pl.szczodrzynski.edziennik.api.v2.librus.data
|
||||
|
||||
import pl.szczodrzynski.edziennik.App
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.ProgressCallback
|
||||
import pl.szczodrzynski.edziennik.api.v2.models.Data
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.ProgressCallback
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||
|
||||
|
||||
class LibrusApiGrades(val app: App,
|
||||
val profile: Profile,
|
||||
|
@ -5,10 +5,6 @@
|
||||
package pl.szczodrzynski.edziennik.api.v2.librus.data
|
||||
|
||||
import pl.szczodrzynski.edziennik.*
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.ProgressCallback
|
||||
import pl.szczodrzynski.edziennik.api.v2.models.Data
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
||||
|
||||
class LibrusApiMe(override val data: DataLibrus,
|
||||
val onSuccess: () -> Unit) : LibrusApi(data) {
|
||||
|
@ -1,10 +1,10 @@
|
||||
package pl.szczodrzynski.edziennik.api.v2.librus.data
|
||||
|
||||
import pl.szczodrzynski.edziennik.App
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.ProgressCallback
|
||||
import pl.szczodrzynski.edziennik.api.v2.models.Data
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.ProgressCallback
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||
|
||||
class LibrusSynergiaGrades(val app: App,
|
||||
val profile: Profile,
|
||||
|
@ -1,12 +0,0 @@
|
||||
package pl.szczodrzynski.edziennik.api.v2.librus.firstlogin
|
||||
|
||||
import pl.szczodrzynski.edziennik.App
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.ProgressCallback
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
||||
|
||||
class FirstLoginLibrus(val app: App, val loginStore: LoginStore, val progressCallback: ProgressCallback, val onSuccess: (profileList: List<Profile>) -> Unit) {
|
||||
init {
|
||||
|
||||
}
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
package pl.szczodrzynski.edziennik.api.v2.librus.firstlogin
|
||||
|
||||
import pl.szczodrzynski.edziennik.App
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.ProgressCallback
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
||||
|
||||
class FirstLoginSynergia(val app: App, val loginStore: LoginStore, val progressCallback: ProgressCallback, val onSuccess: (profileList: List<Profile>) -> Unit) {
|
||||
init {
|
||||
|
||||
}
|
||||
}
|
@ -8,12 +8,9 @@ import im.wangchao.mhttp.body.MediaTypeUtils
|
||||
import im.wangchao.mhttp.callback.JsonCallbackHandler
|
||||
import im.wangchao.mhttp.callback.TextCallbackHandler
|
||||
import pl.szczodrzynski.edziennik.*
|
||||
import pl.szczodrzynski.edziennik.api.AppError
|
||||
import pl.szczodrzynski.edziennik.api.AppError.*
|
||||
import pl.szczodrzynski.edziennik.api.v2.*
|
||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus
|
||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||
import pl.szczodrzynski.edziennik.utils.Utils.c
|
||||
import java.net.HttpURLConnection.HTTP_UNAUTHORIZED
|
||||
import java.util.ArrayList
|
||||
import java.util.regex.Pattern
|
||||
|
@ -10,15 +10,11 @@ import im.wangchao.mhttp.Response
|
||||
import im.wangchao.mhttp.callback.JsonCallbackHandler
|
||||
import im.wangchao.mhttp.callback.TextCallbackHandler
|
||||
import okhttp3.Cookie
|
||||
import okhttp3.HttpUrl
|
||||
import pl.szczodrzynski.edziennik.api.v2.*
|
||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus
|
||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||
import pl.szczodrzynski.edziennik.currentTimeUnix
|
||||
import pl.szczodrzynski.edziennik.getString
|
||||
import pl.szczodrzynski.edziennik.getUnixDate
|
||||
import pl.szczodrzynski.edziennik.isNotNullNorEmpty
|
||||
import java.lang.Exception
|
||||
import java.net.HttpURLConnection
|
||||
|
||||
class LoginLibrusSynergia(val data: DataLibrus, val onSuccess: () -> Unit) {
|
||||
|
@ -6,8 +6,6 @@ import im.wangchao.mhttp.Request
|
||||
import im.wangchao.mhttp.Response
|
||||
import im.wangchao.mhttp.callback.JsonCallbackHandler
|
||||
import pl.szczodrzynski.edziennik.*
|
||||
import pl.szczodrzynski.edziennik.api.AppError
|
||||
import pl.szczodrzynski.edziennik.api.AppError.*
|
||||
import pl.szczodrzynski.edziennik.api.v2.*
|
||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus
|
||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||
|
@ -6,12 +6,26 @@ import androidx.core.util.isNotEmpty
|
||||
import com.google.gson.JsonObject
|
||||
import im.wangchao.mhttp.Response
|
||||
import pl.szczodrzynski.edziennik.App
|
||||
import pl.szczodrzynski.edziennik.api.AppError
|
||||
import pl.szczodrzynski.edziennik.api.AppError.*
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.ProgressCallback
|
||||
import pl.szczodrzynski.edziennik.api.v2.interfaces.EndpointCallback
|
||||
import pl.szczodrzynski.edziennik.datamodels.*
|
||||
import pl.szczodrzynski.edziennik.models.Date
|
||||
import pl.szczodrzynski.edziennik.data.api.AppError.*
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.announcements.Announcement
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.events.Event
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.events.EventType
|
||||
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.lessons.Lesson
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange
|
||||
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.MessageRecipient
|
||||
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.profiles.Profile
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date
|
||||
import java.io.InterruptedIOException
|
||||
import java.net.SocketTimeoutException
|
||||
import java.net.UnknownHostException
|
||||
|
@ -1,8 +1,5 @@
|
||||
package pl.szczodrzynski.edziennik.api.v2.models
|
||||
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
||||
|
||||
/**
|
||||
* A Endpoint descriptor class.
|
||||
*
|
||||
|
@ -5,8 +5,8 @@
|
||||
package pl.szczodrzynski.edziennik.api.v2.models
|
||||
|
||||
import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_NOT_NEEDED
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||
|
||||
/**
|
||||
* A Login Method descriptor class.
|
||||
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.api;
|
||||
package pl.szczodrzynski.edziennik.data.api;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.AsyncTask;
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.api;
|
||||
package pl.szczodrzynski.edziennik.data.api;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.appwidget.AppWidgetManager;
|
||||
@ -43,27 +43,27 @@ import pl.szczodrzynski.edziennik.BuildConfig;
|
||||
import pl.szczodrzynski.edziennik.R;
|
||||
import pl.szczodrzynski.edziennik.MainActivity;
|
||||
import pl.szczodrzynski.edziennik.WidgetTimetable;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback;
|
||||
import pl.szczodrzynski.edziennik.datamodels.AnnouncementFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Attendance;
|
||||
import pl.szczodrzynski.edziennik.datamodels.AttendanceFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Event;
|
||||
import pl.szczodrzynski.edziennik.datamodels.EventFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.EventType;
|
||||
import pl.szczodrzynski.edziennik.datamodels.GradeFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.LessonFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Message;
|
||||
import pl.szczodrzynski.edziennik.datamodels.MessageFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Metadata;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Notice;
|
||||
import pl.szczodrzynski.edziennik.datamodels.NoticeFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile;
|
||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Team;
|
||||
import pl.szczodrzynski.edziennik.models.Date;
|
||||
import pl.szczodrzynski.edziennik.models.Notification;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.announcements.AnnouncementFull;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.attendance.AttendanceFull;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.events.Event;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.events.EventFull;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.events.EventType;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeFull;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonFull;
|
||||
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.metadata.Metadata;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.notices.NoticeFull;
|
||||
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.teams.Team;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Notification;
|
||||
import pl.szczodrzynski.edziennik.network.ServerRequest;
|
||||
import pl.szczodrzynski.edziennik.sync.SyncJob;
|
||||
import pl.szczodrzynski.edziennik.utils.Themes;
|
||||
@ -75,34 +75,34 @@ import static com.mikepenz.iconics.utils.IconicsConvertersKt.colorInt;
|
||||
import static com.mikepenz.iconics.utils.IconicsConvertersKt.sizeDp;
|
||||
import static pl.szczodrzynski.edziennik.App.APP_URL;
|
||||
import static pl.szczodrzynski.edziennik.MainActivity.DRAWER_ITEM_HOME;
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_OK;
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_OTHER;
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_PROFILE_ARCHIVED;
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_PROFILE_NOT_FOUND;
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.stringErrorCode;
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.stringErrorType;
|
||||
import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_AGENDA;
|
||||
import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_ALL;
|
||||
import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_ANNOUNCEMENTS;
|
||||
import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_ATTENDANCES;
|
||||
import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_GRADES;
|
||||
import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_HOMEWORKS;
|
||||
import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_MESSAGES_INBOX;
|
||||
import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_MESSAGES_OUTBOX;
|
||||
import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_NOTICES;
|
||||
import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_TIMETABLE;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_HOMEWORK;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_IUCZNIOWIE;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_LIBRUS;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_MOBIDZIENNIK;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_VULCAN;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Profile.REGISTRATION_ENABLED;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OK;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OTHER;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_PROFILE_ARCHIVED;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_PROFILE_NOT_FOUND;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.stringErrorCode;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.stringErrorType;
|
||||
import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_AGENDA;
|
||||
import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_ALL;
|
||||
import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_ANNOUNCEMENTS;
|
||||
import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_ATTENDANCE;
|
||||
import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_GRADES;
|
||||
import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_HOMEWORK;
|
||||
import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_MESSAGES_INBOX;
|
||||
import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_MESSAGES_OUTBOX;
|
||||
import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_NOTICES;
|
||||
import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_TIMETABLE;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_HOMEWORK;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_IUCZNIOWIE;
|
||||
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_VULCAN;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile.REGISTRATION_ENABLED;
|
||||
import static pl.szczodrzynski.edziennik.sync.SyncService.PROFILE_MAX_PROGRESS;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.d;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.ns;
|
||||
@ -115,7 +115,7 @@ public class Edziennik {
|
||||
private static boolean registerEmpty;
|
||||
public static int oldLuckyNumber;
|
||||
|
||||
public static OldEdziennikInterface getApi(App app, int loginType) {
|
||||
public static EdziennikInterface getApi(App app, int loginType) {
|
||||
switch (loginType) {
|
||||
default:
|
||||
case LOGIN_TYPE_MOBIDZIENNIK:
|
||||
@ -306,7 +306,7 @@ public class Edziennik {
|
||||
app.notifier.add(new Notification(app.getContext(), text)
|
||||
.withProfileData(profile.getId(), profile.getName())
|
||||
.withType(event.type == TYPE_HOMEWORK ? Notification.TYPE_NEW_HOMEWORK : Notification.TYPE_NEW_EVENT)
|
||||
.withFragmentRedirect(event.type == TYPE_HOMEWORK ? MainActivity.DRAWER_ITEM_HOMEWORKS : MainActivity.DRAWER_ITEM_AGENDA)
|
||||
.withFragmentRedirect(event.type == TYPE_HOMEWORK ? MainActivity.DRAWER_ITEM_HOMEWORK : MainActivity.DRAWER_ITEM_AGENDA)
|
||||
.withLongExtra("eventId", event.id)
|
||||
.withLongExtra("eventDate", event.eventDate.getValue())
|
||||
.withAddedDate(event.addedDate)
|
||||
@ -354,7 +354,7 @@ public class Edziennik {
|
||||
app.notifier.add(new Notification(app.getContext(), text)
|
||||
.withProfileData(profile.getId(), profile.getName())
|
||||
.withType(Notification.TYPE_NEW_NOTICE)
|
||||
.withFragmentRedirect(MainActivity.DRAWER_ITEM_NOTICES)
|
||||
.withFragmentRedirect(MainActivity.DRAWER_ITEM_BEHAVIOUR)
|
||||
.withLongExtra("noticeId", notice.id)
|
||||
.withAddedDate(notice.addedDate)
|
||||
);
|
||||
@ -382,7 +382,7 @@ public class Edziennik {
|
||||
app.notifier.add(new Notification(app.getContext(), text)
|
||||
.withProfileData(profile.getId(), profile.getName())
|
||||
.withType(Notification.TYPE_NEW_ATTENDANCE)
|
||||
.withFragmentRedirect(MainActivity.DRAWER_ITEM_ATTENDANCES)
|
||||
.withFragmentRedirect(MainActivity.DRAWER_ITEM_ATTENDANCE)
|
||||
.withLongExtra("attendanceId", attendance.id)
|
||||
.withAddedDate(attendance.addedDate)
|
||||
);
|
||||
@ -521,7 +521,7 @@ public class Edziennik {
|
||||
app.notifier.add(new Notification(app.getContext(), app.getString(R.string.notification_shared_event_format, event.sharedByName, type != null ? type.name : "wydarzenie", event.eventDate == null ? "nieznana data" : event.eventDate.getFormattedString(), event.topic))
|
||||
.withProfileData(profile.getId(), profile.getName())
|
||||
.withType(event.type == TYPE_HOMEWORK ? Notification.TYPE_NEW_SHARED_HOMEWORK : Notification.TYPE_NEW_SHARED_EVENT)
|
||||
.withFragmentRedirect(event.type == TYPE_HOMEWORK ? MainActivity.DRAWER_ITEM_HOMEWORKS : MainActivity.DRAWER_ITEM_AGENDA)
|
||||
.withFragmentRedirect(event.type == TYPE_HOMEWORK ? MainActivity.DRAWER_ITEM_HOMEWORK : MainActivity.DRAWER_ITEM_AGENDA)
|
||||
.withLongExtra("eventDate", event.eventDate.getValue())
|
||||
);
|
||||
}
|
||||
@ -625,7 +625,7 @@ public class Edziennik {
|
||||
* Used in services, login form and {@code guiSync}
|
||||
* <p>
|
||||
* May be ran on worker thread.
|
||||
* {@link OldEdziennikInterface}.sync is ran always on worker thread.
|
||||
* {@link EdziennikInterface}.sync is ran always on worker thread.
|
||||
* Every callback is ran on the UI thread.
|
||||
*
|
||||
* @param app
|
||||
@ -676,7 +676,7 @@ public class Edziennik {
|
||||
}
|
||||
};
|
||||
AsyncTask.execute(() -> {
|
||||
ProfileFull profile = app.db.profileDao().getFullByIdNow(profileId);
|
||||
ProfileFull profile = app.db.profileDao().getByIdNow(profileId);
|
||||
if (profile != null) {
|
||||
|
||||
if (profile.getArchived()) {
|
||||
@ -849,7 +849,7 @@ public class Edziennik {
|
||||
app.getString(R.string.menu_grades),
|
||||
app.getString(R.string.menu_homework),
|
||||
app.getString(R.string.menu_notices),
|
||||
app.getString(R.string.menu_attendances),
|
||||
app.getString(R.string.menu_attendance),
|
||||
app.getString(R.string.title_messages_inbox_single),
|
||||
app.getString(R.string.title_messages_sent_single),
|
||||
app.getString(R.string.menu_announcements)
|
||||
@ -858,9 +858,9 @@ public class Edziennik {
|
||||
FEATURE_TIMETABLE,
|
||||
FEATURE_AGENDA,
|
||||
FEATURE_GRADES,
|
||||
FEATURE_HOMEWORKS,
|
||||
FEATURE_HOMEWORK,
|
||||
FEATURE_NOTICES,
|
||||
FEATURE_ATTENDANCES,
|
||||
FEATURE_ATTENDANCE,
|
||||
FEATURE_MESSAGES_INBOX,
|
||||
FEATURE_MESSAGES_OUTBOX,
|
||||
FEATURE_ANNOUNCEMENTS
|
||||
@ -1130,7 +1130,7 @@ public class Edziennik {
|
||||
.show();
|
||||
}
|
||||
public void removeProfile(int profileId) {
|
||||
Profile profileObject = app.db.profileDao().getFullByIdNow(profileId);
|
||||
Profile profileObject = app.db.profileDao().getByIdNow(profileId);
|
||||
if (profileObject == null)
|
||||
return;
|
||||
app.db.announcementDao().clear(profileId);
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.api;
|
||||
package pl.szczodrzynski.edziennik.data.api;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
@ -34,64 +34,64 @@ import okhttp3.HttpUrl;
|
||||
import pl.szczodrzynski.edziennik.App;
|
||||
import pl.szczodrzynski.edziennik.BuildConfig;
|
||||
import pl.szczodrzynski.edziennik.R;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.AttachmentGetCallback;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.LoginCallback;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.MessageGetCallback;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.RecipientListGetCallback;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Announcement;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Attendance;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Event;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Grade;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Lesson;
|
||||
import pl.szczodrzynski.edziennik.datamodels.LessonChange;
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore;
|
||||
import pl.szczodrzynski.edziennik.datamodels.LuckyNumber;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Message;
|
||||
import pl.szczodrzynski.edziennik.datamodels.MessageFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.MessageRecipient;
|
||||
import pl.szczodrzynski.edziennik.datamodels.MessageRecipientFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Metadata;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Notice;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile;
|
||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Subject;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Teacher;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Team;
|
||||
import pl.szczodrzynski.edziennik.messages.MessagesComposeInfo;
|
||||
import pl.szczodrzynski.edziennik.models.Date;
|
||||
import pl.szczodrzynski.edziennik.models.Endpoint;
|
||||
import pl.szczodrzynski.edziennik.models.Time;
|
||||
import pl.szczodrzynski.edziennik.models.Week;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.AttachmentGetCallback;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.LoginCallback;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.MessageGetCallback;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.RecipientListGetCallback;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.announcements.Announcement;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.events.Event;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.lessons.Lesson;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.luckynumber.LuckyNumber;
|
||||
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.MessageRecipient;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipientFull;
|
||||
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.profiles.Profile;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team;
|
||||
import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesComposeInfo;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Endpoint;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Week;
|
||||
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_INVALID_LOGIN;
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_INVALID_SCHOOL_NAME;
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_MAINTENANCE;
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_OTHER;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT_EXCUSED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_BELATED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_PRESENT;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_RELEASED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CANCELLED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CHANGE;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_DELETED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_RECEIVED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_SENT;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_NEGATIVE;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_NEUTRAL;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_POSITIVE;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_INVALID_LOGIN;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_INVALID_SCHOOL_NAME;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_MAINTENANCE;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OTHER;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT_EXCUSED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_BELATED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_PRESENT;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_RELEASED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CANCELLED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CHANGE;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_DELETED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_RECEIVED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_SENT;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.notices.Notice.TYPE_NEGATIVE;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.notices.Notice.TYPE_NEUTRAL;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.notices.Notice.TYPE_POSITIVE;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.crc16;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.crc32;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.d;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.getWordGradeValue;
|
||||
|
||||
public class Iuczniowie implements OldEdziennikInterface {
|
||||
public class Iuczniowie implements EdziennikInterface {
|
||||
public Iuczniowie(App app) {
|
||||
this.app = app;
|
||||
}
|
||||
@ -200,7 +200,7 @@ public class Iuczniowie implements OldEdziennikInterface {
|
||||
targetEndpoints.add("Exams");
|
||||
targetEndpoints.add("Notices");
|
||||
targetEndpoints.add("Announcements");
|
||||
targetEndpoints.add("Attendances");
|
||||
targetEndpoints.add("Attendance");
|
||||
targetEndpoints.add("MessagesInbox");
|
||||
targetEndpoints.add("MessagesOutbox");
|
||||
targetEndpoints.add("Finish");
|
||||
@ -235,14 +235,14 @@ public class Iuczniowie implements OldEdziennikInterface {
|
||||
targetEndpoints.add("Grades");
|
||||
targetEndpoints.add("PropositionGrades");
|
||||
break;
|
||||
case FEATURE_HOMEWORKS:
|
||||
targetEndpoints.add("Homeworks");
|
||||
case FEATURE_HOMEWORK:
|
||||
targetEndpoints.add("Homework");
|
||||
break;
|
||||
case FEATURE_NOTICES:
|
||||
targetEndpoints.add("Notices");
|
||||
break;
|
||||
case FEATURE_ATTENDANCES:
|
||||
targetEndpoints.add("Attendances");
|
||||
case FEATURE_ATTENDANCE:
|
||||
targetEndpoints.add("Attendance");
|
||||
break;
|
||||
case FEATURE_MESSAGES_INBOX:
|
||||
targetEndpoints.add("MessagesInbox");
|
||||
@ -300,9 +300,9 @@ public class Iuczniowie implements OldEdziennikInterface {
|
||||
}
|
||||
}
|
||||
|
||||
this.attendancesMonth = today.month;
|
||||
this.attendancesYear = today.year;
|
||||
this.attendancesPrevMonthChecked = false;
|
||||
this.attendanceMonth = today.month;
|
||||
this.attendanceYear = today.year;
|
||||
this.attendancePrevMonthChecked = false;
|
||||
this.examsMonth = today.month;
|
||||
this.examsYear = today.year;
|
||||
this.examsMonthsChecked = 0;
|
||||
@ -352,8 +352,8 @@ public class Iuczniowie implements OldEdziennikInterface {
|
||||
case "Announcements":
|
||||
getAnnouncements();
|
||||
break;
|
||||
case "Attendances":
|
||||
getAttendances();
|
||||
case "Attendance":
|
||||
getAttendance();
|
||||
break;
|
||||
case "MessagesInbox":
|
||||
getMessagesInbox();
|
||||
@ -880,11 +880,17 @@ public class Iuczniowie implements OldEdziennikInterface {
|
||||
boolean countToTheAverage = jGrade.get("DoSredniej").getAsBoolean();
|
||||
float value = jGrade.get("WartoscDoSred").getAsFloat();
|
||||
|
||||
String gradeColor = jGrade.get("Kolor").getAsString();
|
||||
int colorInt = 0xff2196f3;
|
||||
if (!gradeColor.isEmpty()) {
|
||||
colorInt = Color.parseColor("#"+gradeColor);
|
||||
}
|
||||
|
||||
Grade gradeObject = new Grade(
|
||||
profileId,
|
||||
jGrade.get("idK").getAsLong(),
|
||||
jGrade.get("Kategoria").getAsString(),
|
||||
Color.parseColor("#"+jGrade.get("Kolor").getAsString()),
|
||||
colorInt,
|
||||
"",
|
||||
jGrade.get("Ocena").getAsString(),
|
||||
value,
|
||||
@ -1190,17 +1196,17 @@ public class Iuczniowie implements OldEdziennikInterface {
|
||||
});
|
||||
}
|
||||
|
||||
private int attendancesYear;
|
||||
private int attendancesMonth;
|
||||
private boolean attendancesPrevMonthChecked = false;
|
||||
private void getAttendances() {
|
||||
callback.onActionStarted(R.string.sync_action_syncing_attendances);
|
||||
private int attendanceYear;
|
||||
private int attendanceMonth;
|
||||
private boolean attendancePrevMonthChecked = false;
|
||||
private void getAttendance() {
|
||||
callback.onActionStarted(R.string.sync_action_syncing_attendance);
|
||||
apiRequest(Request.builder()
|
||||
.url(IDZIENNIK_URL +"/mod_panelRodzica/obecnosci/WS_obecnosciUcznia.asmx/pobierzObecnosciUcznia")
|
||||
.userAgent(userAgent)
|
||||
.addParameter("idPozDziennika", loginRegisterId)
|
||||
.addParameter("mc", attendancesMonth)
|
||||
.addParameter("rok", attendancesYear)
|
||||
.addParameter("mc", attendanceMonth)
|
||||
.addParameter("rok", attendanceYear)
|
||||
.addParameter("dataTygodnia", "")
|
||||
.postJson(), (result, response) -> {
|
||||
JsonObject data = result.getAsJsonObject("d");
|
||||
@ -1275,25 +1281,25 @@ public class Iuczniowie implements OldEdziennikInterface {
|
||||
}
|
||||
}
|
||||
|
||||
int attendancesDateValue = attendancesYear*10000 + attendancesMonth*100;
|
||||
if (profile.getEmpty() && attendancesDateValue > profile.getSemesterStart(1).getValue()) {
|
||||
attendancesPrevMonthChecked = true; // do not need to check prev month later
|
||||
attendancesMonth--;
|
||||
if (attendancesMonth < 1) {
|
||||
attendancesMonth = 12;
|
||||
attendancesYear--;
|
||||
int attendanceDateValue = attendanceYear *10000 + attendanceMonth *100;
|
||||
if (profile.getEmpty() && attendanceDateValue > profile.getSemesterStart(1).getValue()) {
|
||||
attendancePrevMonthChecked = true; // do not need to check prev month later
|
||||
attendanceMonth--;
|
||||
if (attendanceMonth < 1) {
|
||||
attendanceMonth = 12;
|
||||
attendanceYear--;
|
||||
}
|
||||
r("get", "Attendances");
|
||||
} else if (!attendancesPrevMonthChecked /* get also the previous month */) {
|
||||
attendancesMonth--;
|
||||
if (attendancesMonth < 1) {
|
||||
attendancesMonth = 12;
|
||||
attendancesYear--;
|
||||
r("get", "Attendance");
|
||||
} else if (!attendancePrevMonthChecked /* get also the previous month */) {
|
||||
attendanceMonth--;
|
||||
if (attendanceMonth < 1) {
|
||||
attendanceMonth = 12;
|
||||
attendanceYear--;
|
||||
}
|
||||
attendancesPrevMonthChecked = true;
|
||||
r("get", "Attendances");
|
||||
attendancePrevMonthChecked = true;
|
||||
r("get", "Attendance");
|
||||
} else {
|
||||
r("finish", "Attendances");
|
||||
r("finish", "Attendance");
|
||||
}
|
||||
});
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.api;
|
||||
package pl.szczodrzynski.edziennik.data.api;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
@ -45,38 +45,40 @@ import im.wangchao.mhttp.callback.TextCallbackHandler;
|
||||
import pl.szczodrzynski.edziennik.App;
|
||||
import pl.szczodrzynski.edziennik.BuildConfig;
|
||||
import pl.szczodrzynski.edziennik.R;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.AttachmentGetCallback;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.LoginCallback;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.MessageGetCallback;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.RecipientListGetCallback;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Announcement;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Attendance;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Event;
|
||||
import pl.szczodrzynski.edziennik.datamodels.EventType;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Grade;
|
||||
import pl.szczodrzynski.edziennik.datamodels.GradeCategory;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Lesson;
|
||||
import pl.szczodrzynski.edziennik.datamodels.LessonChange;
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore;
|
||||
import pl.szczodrzynski.edziennik.datamodels.LuckyNumber;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Message;
|
||||
import pl.szczodrzynski.edziennik.datamodels.MessageFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.MessageRecipient;
|
||||
import pl.szczodrzynski.edziennik.datamodels.MessageRecipientFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Metadata;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Notice;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile;
|
||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Subject;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Teacher;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Team;
|
||||
import pl.szczodrzynski.edziennik.messages.MessagesComposeInfo;
|
||||
import pl.szczodrzynski.edziennik.models.Date;
|
||||
import pl.szczodrzynski.edziennik.models.Endpoint;
|
||||
import pl.szczodrzynski.edziennik.models.Time;
|
||||
import pl.szczodrzynski.edziennik.models.Week;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.AttachmentGetCallback;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.LoginCallback;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.MessageGetCallback;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.RecipientListGetCallback;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback;
|
||||
import pl.szczodrzynski.edziennik.data.api.v2.models.DataStore;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.announcements.Announcement;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.events.Event;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.events.EventType;
|
||||
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.lessons.Lesson;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.luckynumber.LuckyNumber;
|
||||
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.MessageRecipient;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipientFull;
|
||||
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.profiles.Profile;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.teachers.TeacherAbsence;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team;
|
||||
import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesComposeInfo;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Endpoint;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Week;
|
||||
import pl.szczodrzynski.edziennik.utils.Utils;
|
||||
|
||||
import static java.net.HttpURLConnection.HTTP_BAD_REQUEST;
|
||||
@ -85,44 +87,44 @@ import static java.net.HttpURLConnection.HTTP_GONE;
|
||||
import static java.net.HttpURLConnection.HTTP_NOT_FOUND;
|
||||
import static java.net.HttpURLConnection.HTTP_OK;
|
||||
import static java.net.HttpURLConnection.HTTP_UNAUTHORIZED;
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_INVALID_LOGIN;
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_LIBRUS_DISCONNECTED;
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_LIBRUS_NOT_ACTIVATED;
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_MAINTENANCE;
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_OTHER;
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_PROFILE_NOT_FOUND;
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_SYNERGIA_NOT_ACTIVATED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT_EXCUSED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_BELATED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_PRESENT;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_RELEASED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_PT_MEETING;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_TEACHER_ABSENCE;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_NORMAL;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CANCELLED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CHANGE;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_RECEIVED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_SENT;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_NEGATIVE;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_NEUTRAL;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_POSITIVE;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_EDUCATOR;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_LIBRARIAN;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_OTHER;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_PARENTS_COUNCIL;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_PEDAGOGUE;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_SCHOOL_ADMIN;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_SCHOOL_PARENTS_COUNCIL;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_SECRETARIAT;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_SUPER_ADMIN;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_TEACHER;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_INVALID_LOGIN;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_LIBRUS_DISCONNECTED;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_LIBRUS_NOT_ACTIVATED;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_MAINTENANCE;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OTHER;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_PROFILE_NOT_FOUND;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_SYNERGIA_NOT_ACTIVATED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT_EXCUSED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_BELATED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_PRESENT;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_RELEASED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_PT_MEETING;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_TEACHER_ABSENCE;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_NORMAL;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CANCELLED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CHANGE;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_RECEIVED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_SENT;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.notices.Notice.TYPE_NEGATIVE;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.notices.Notice.TYPE_NEUTRAL;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.notices.Notice.TYPE_POSITIVE;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_EDUCATOR;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_LIBRARIAN;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_OTHER;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_PARENTS_COUNCIL;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_PEDAGOGUE;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_SCHOOL_ADMIN;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_SCHOOL_PARENTS_COUNCIL;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_SECRETARIAT;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_SUPER_ADMIN;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_TEACHER;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.bs;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.c;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.contains;
|
||||
@ -131,7 +133,7 @@ import static pl.szczodrzynski.edziennik.utils.Utils.d;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.getGradeValue;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.strToInt;
|
||||
|
||||
public class Librus implements OldEdziennikInterface {
|
||||
public class Librus implements EdziennikInterface {
|
||||
public Librus(App app) {
|
||||
this.app = app;
|
||||
}
|
||||
@ -169,6 +171,7 @@ public class Librus implements OldEdziennikInterface {
|
||||
|
||||
private List<Team> teamList;
|
||||
private List<Teacher> teacherList;
|
||||
private List<TeacherAbsence> teacherAbsenceList;
|
||||
private List<Subject> subjectList;
|
||||
private List<Lesson> lessonList;
|
||||
private List<LessonChange> lessonChangeList;
|
||||
@ -198,6 +201,7 @@ public class Librus implements OldEdziennikInterface {
|
||||
private boolean enableDescriptiveGrades = false;
|
||||
private boolean enableTextGrades = false;
|
||||
private boolean enableBehaviourGrades = true;
|
||||
private long unitId = -1;
|
||||
private int startPointsSemester1 = 0;
|
||||
private int startPointsSemester2 = 0;
|
||||
|
||||
@ -212,6 +216,8 @@ public class Librus implements OldEdziennikInterface {
|
||||
this.fullSync = profile == null || profile.getEmpty() || profile.shouldFullSync(activityContext);
|
||||
this.today = Date.getToday();
|
||||
|
||||
DataStore ds = new DataStore(app.db, profileId);
|
||||
|
||||
this.librusEmail = loginStore.getLoginData("email", "");
|
||||
this.librusPassword = loginStore.getLoginData("password", "");
|
||||
if (profile == null) {
|
||||
@ -236,6 +242,7 @@ public class Librus implements OldEdziennikInterface {
|
||||
|
||||
teamList = profileId == -1 ? new ArrayList<>() : app.db.teamDao().getAllNow(profileId);
|
||||
teacherList = profileId == -1 ? new ArrayList<>() : app.db.teacherDao().getAllNow(profileId);
|
||||
teacherAbsenceList = new ArrayList<>();
|
||||
subjectList = new ArrayList<>();
|
||||
lessonList = new ArrayList<>();
|
||||
lessonChangeList = new ArrayList<>();
|
||||
@ -285,15 +292,18 @@ public class Librus implements OldEdziennikInterface {
|
||||
targetEndpoints.add("Grades");
|
||||
targetEndpoints.add("PointGrades");
|
||||
targetEndpoints.add("DescriptiveGrades");
|
||||
targetEndpoints.add("TextGrades");
|
||||
targetEndpoints.add("BehaviourGrades");
|
||||
targetEndpoints.add("GradesComments");
|
||||
|
||||
targetEndpoints.add("Events");
|
||||
targetEndpoints.add("TeacherFreeDays");
|
||||
targetEndpoints.add("CustomTypes");
|
||||
targetEndpoints.add("Homeworks");
|
||||
targetEndpoints.add("Homework");
|
||||
targetEndpoints.add("LuckyNumbers");
|
||||
targetEndpoints.add("Notices");
|
||||
targetEndpoints.add("AttendancesTypes");
|
||||
targetEndpoints.add("Attendances");
|
||||
targetEndpoints.add("AttendanceTypes");
|
||||
targetEndpoints.add("Attendance");
|
||||
targetEndpoints.add("Announcements");
|
||||
targetEndpoints.add("PtMeetings");
|
||||
|
||||
@ -343,6 +353,8 @@ public class Librus implements OldEdziennikInterface {
|
||||
targetEndpoints.add("Events");
|
||||
targetEndpoints.add("CustomTypes");
|
||||
targetEndpoints.add("PtMeetings");
|
||||
targetEndpoints.add("SchoolFreeDays");
|
||||
targetEndpoints.add("TeacherFreeDays");
|
||||
break;
|
||||
case FEATURE_GRADES:
|
||||
targetEndpoints.add("SavedGradeCategories");
|
||||
@ -356,17 +368,20 @@ public class Librus implements OldEdziennikInterface {
|
||||
targetEndpoints.add("Grades");
|
||||
targetEndpoints.add("PointGrades");
|
||||
targetEndpoints.add("DescriptiveGrades");
|
||||
targetEndpoints.add("TextGrades");
|
||||
targetEndpoints.add("BehaviourGrades");
|
||||
|
||||
targetEndpoints.add("GradesComments");
|
||||
break;
|
||||
case FEATURE_HOMEWORKS:
|
||||
targetEndpoints.add("Homeworks");
|
||||
case FEATURE_HOMEWORK:
|
||||
targetEndpoints.add("Homework");
|
||||
break;
|
||||
case FEATURE_NOTICES:
|
||||
targetEndpoints.add("Notices");
|
||||
break;
|
||||
case FEATURE_ATTENDANCES:
|
||||
targetEndpoints.add("AttendancesTypes");
|
||||
targetEndpoints.add("Attendances");
|
||||
case FEATURE_ATTENDANCE:
|
||||
targetEndpoints.add("AttendanceTypes");
|
||||
targetEndpoints.add("Attendance");
|
||||
break;
|
||||
case FEATURE_MESSAGES_INBOX:
|
||||
if (!hasMessagesLogin) {
|
||||
@ -430,6 +445,10 @@ public class Librus implements OldEdziennikInterface {
|
||||
callback.onProgress(PROGRESS_STEP);
|
||||
index++;
|
||||
}
|
||||
if (index > targetEndpoints.size()) {
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
d(TAG, "Called r("+type+", "+endpoint+"). Getting "+targetEndpoints.get(index));
|
||||
switch (targetEndpoints.get(index)) {
|
||||
case "Me":
|
||||
@ -495,6 +514,12 @@ public class Librus implements OldEdziennikInterface {
|
||||
case "DescriptiveGrades":
|
||||
getDescriptiveGrades();
|
||||
break;
|
||||
case "TextGrades":
|
||||
getTextGrades();
|
||||
break;
|
||||
case "GradesComments":
|
||||
getGradesComments();
|
||||
break;
|
||||
case "BehaviourGrades":
|
||||
getBehaviourGrades();
|
||||
break;
|
||||
@ -504,8 +529,8 @@ public class Librus implements OldEdziennikInterface {
|
||||
case "CustomTypes":
|
||||
getCustomTypes();
|
||||
break;
|
||||
case "Homeworks":
|
||||
getHomeworks();
|
||||
case "Homework":
|
||||
getHomework();
|
||||
break;
|
||||
case "LuckyNumbers":
|
||||
getLuckyNumbers();
|
||||
@ -513,11 +538,11 @@ public class Librus implements OldEdziennikInterface {
|
||||
case "Notices":
|
||||
getNotices();
|
||||
break;
|
||||
case "AttendancesTypes":
|
||||
getAttendancesTypes();
|
||||
case "AttendanceTypes":
|
||||
getAttendanceTypes();
|
||||
break;
|
||||
case "Attendances":
|
||||
getAttendances();
|
||||
case "Attendance":
|
||||
getAttendance();
|
||||
break;
|
||||
case "Announcements":
|
||||
getAnnouncements();
|
||||
@ -531,6 +556,9 @@ public class Librus implements OldEdziennikInterface {
|
||||
case "TeacherFreeDays":
|
||||
getTeacherFreeDays();
|
||||
break;
|
||||
case "SchoolFreeDays":
|
||||
getSchoolFreeDays();
|
||||
break;
|
||||
case "MessagesLogin":
|
||||
getMessagesLogin();
|
||||
break;
|
||||
@ -572,6 +600,8 @@ public class Librus implements OldEdziennikInterface {
|
||||
}
|
||||
if (eventTypeList.size() > 0)
|
||||
app.db.eventTypeDao().addAll(eventTypeList);
|
||||
if (teacherAbsenceList.size() > 0)
|
||||
app.db.teacherAbsenceDao().addAll(teacherAbsenceList);
|
||||
if (noticeList.size() > 0) {
|
||||
app.db.noticeDao().clear(profileId);
|
||||
app.db.noticeDao().addAll(noticeList);
|
||||
@ -641,7 +671,7 @@ public class Librus implements OldEdziennikInterface {
|
||||
};
|
||||
|
||||
librusLoginCallback = redirectUrl -> {
|
||||
fakeAuthorize = "authorize2";
|
||||
fakeAuthorize = "authorize";
|
||||
authorize(AUTHORIZE_URL, authorizeCallback);
|
||||
};
|
||||
|
||||
@ -1400,7 +1430,8 @@ public class Librus implements OldEdziennikInterface {
|
||||
}
|
||||
JsonElement unit = myClass.get("Unit");
|
||||
if (unit != null && !(unit instanceof JsonNull)) {
|
||||
profile.putStudentData("unitId", unit.getAsJsonObject().get("Id").getAsLong());
|
||||
unitId = unit.getAsJsonObject().get("Id").getAsLong();
|
||||
profile.putStudentData("unitId", unitId);
|
||||
}
|
||||
r("finish", "Classes");
|
||||
}
|
||||
@ -1597,6 +1628,10 @@ public class Librus implements OldEdziennikInterface {
|
||||
r("finish", "Classrooms");
|
||||
return;
|
||||
}
|
||||
if (data.get("Classrooms") == null) {
|
||||
r("finish", "Classrooms");
|
||||
return;
|
||||
}
|
||||
JsonArray jClassrooms = data.get("Classrooms").getAsJsonArray();
|
||||
//d("Got Classrooms: "+jClassrooms.toString());
|
||||
classrooms.clear();
|
||||
@ -1655,11 +1690,32 @@ public class Librus implements OldEdziennikInterface {
|
||||
continue;
|
||||
}
|
||||
|
||||
Time startTime = null;
|
||||
Time endTime = null;
|
||||
try {
|
||||
startTime = Time.fromH_m(lesson.get(substitution && !cancelled ? "OrgHourFrom" : "HourFrom").getAsString());
|
||||
endTime = Time.fromH_m(lesson.get(substitution && !cancelled ? "OrgHourTo" : "HourTo").getAsString());
|
||||
}
|
||||
catch (Exception ignore) {
|
||||
try {
|
||||
JsonElement lessonNo;
|
||||
if (!((lessonNo = lesson.get("LessonNo")) instanceof JsonNull)) {
|
||||
Pair<Time, Time> timePair = lessonRanges.get(strToInt(lessonNo.getAsString()));
|
||||
if (timePair != null) {
|
||||
startTime = timePair.first;
|
||||
endTime = timePair.second;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ignore2) { }
|
||||
}
|
||||
|
||||
|
||||
Lesson lessonObject = new Lesson(
|
||||
profileId,
|
||||
lesson.get("DayNo").getAsInt() - 1,
|
||||
Time.fromH_m(lesson.get(substitution && !cancelled ? "OrgHourFrom" : "HourFrom").getAsString()),
|
||||
Time.fromH_m(lesson.get(substitution && !cancelled ? "OrgHourTo" : "HourTo").getAsString())
|
||||
startTime,
|
||||
endTime
|
||||
);
|
||||
|
||||
JsonElement subject;
|
||||
@ -1704,7 +1760,7 @@ public class Librus implements OldEdziennikInterface {
|
||||
r("finish", "Substitutions");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
JsonArray substitutions = data.get("Substitutions").getAsJsonArray();
|
||||
try {
|
||||
List<Long> ignoreList = new ArrayList<>();
|
||||
@ -1873,7 +1929,7 @@ public class Librus implements OldEdziennikInterface {
|
||||
}
|
||||
|
||||
private void getGradesCategories() {
|
||||
if (!fullSync) {
|
||||
if (!fullSync && false) {
|
||||
// cancel every not-full sync; no need to download categories again
|
||||
// every full sync it'll be enabled to make sure there are no grades - by getUnits
|
||||
r("finish", "GradesCategories");
|
||||
@ -1927,6 +1983,32 @@ public class Librus implements OldEdziennikInterface {
|
||||
});
|
||||
}
|
||||
|
||||
private void getGradesComments() {
|
||||
callback.onActionStarted(R.string.sync_action_syncing_grade_comments);
|
||||
apiRequest("Grades/Comments", data -> {
|
||||
if (data == null) {
|
||||
r("finish", "GradesComments");
|
||||
return;
|
||||
}
|
||||
|
||||
JsonArray comments = data.get("Comments").getAsJsonArray();
|
||||
for (JsonElement commentEl : comments) {
|
||||
JsonObject comment = commentEl.getAsJsonObject();
|
||||
long gradeId = comment.get("Grade").getAsJsonObject().get("Id").getAsLong();
|
||||
String text = comment.get("Text").getAsString();
|
||||
|
||||
for (Grade grade : gradeList) {
|
||||
if (grade.id == gradeId) {
|
||||
grade.description = text;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
r("finish", "GradesComments");
|
||||
});
|
||||
}
|
||||
|
||||
private void getPointGradesCategories() {
|
||||
if (!fullSync || !enablePointGrades) {
|
||||
// cancel every not-full sync; no need to download categories again
|
||||
@ -2382,6 +2464,70 @@ public class Librus implements OldEdziennikInterface {
|
||||
});
|
||||
}
|
||||
|
||||
private void getTextGrades() {
|
||||
callback.onActionStarted(R.string.sync_action_syncing_descriptive_grades);
|
||||
apiRequest("DescriptiveGrades", data -> {
|
||||
if (data == null) {
|
||||
r("finish", "TextGrades");
|
||||
return;
|
||||
}
|
||||
JsonArray grades = data.get("Grades").getAsJsonArray();
|
||||
//d("Got Grades: "+grades.toString());
|
||||
for (JsonElement gradeEl : grades) {
|
||||
JsonObject grade = gradeEl.getAsJsonObject();
|
||||
long id = grade.get("Id").getAsLong();
|
||||
long teacherId = grade.get("AddedBy").getAsJsonObject().get("Id").getAsLong();
|
||||
int semester = grade.get("Semester").getAsInt();
|
||||
long subjectId = grade.get("Subject").getAsJsonObject().get("Id").getAsLong();
|
||||
JsonElement map = grade.get("Map");
|
||||
JsonElement realGrade = grade.get("RealGradeValue");
|
||||
String description = "";
|
||||
if (map != null) {
|
||||
description = map.getAsString();
|
||||
}
|
||||
else if (realGrade != null) {
|
||||
description = realGrade.getAsString();
|
||||
}
|
||||
|
||||
long categoryId = -1;
|
||||
JsonElement skillEl = grade.get("Skill");
|
||||
if (skillEl != null) {
|
||||
categoryId = skillEl.getAsJsonObject().get("Id").getAsLong();
|
||||
}
|
||||
|
||||
String str_date = grade.get("AddDate").getAsString();
|
||||
long addedDate = Date.fromIso(str_date);
|
||||
|
||||
String category = "";
|
||||
int color = -1;
|
||||
GradeCategory gradeCategory = GradeCategory.search(gradeCategoryList, categoryId);
|
||||
if (gradeCategory != null) {
|
||||
category = gradeCategory.text;
|
||||
color = gradeCategory.color;
|
||||
}
|
||||
|
||||
Grade gradeObject = new Grade(
|
||||
profileId,
|
||||
id,
|
||||
category,
|
||||
color,
|
||||
"",
|
||||
description,
|
||||
0.0f,
|
||||
0,
|
||||
semester,
|
||||
teacherId,
|
||||
subjectId
|
||||
);
|
||||
gradeObject.type = Grade.TYPE_DESCRIPTIVE;
|
||||
|
||||
gradeList.add(gradeObject);
|
||||
metadataList.add(new Metadata(profileId, Metadata.TYPE_GRADE, gradeObject.id, profile.getEmpty(), profile.getEmpty(), addedDate));
|
||||
}
|
||||
r("finish", "TextGrades");
|
||||
});
|
||||
}
|
||||
|
||||
private void getBehaviourGrades() {
|
||||
d(TAG, "Grades settings: "+enableStandardGrades+", "+enablePointGrades+", "+enableDescriptiveGrades);
|
||||
if (!enableBehaviourGrades) {
|
||||
@ -2537,7 +2683,7 @@ public class Librus implements OldEdziennikInterface {
|
||||
&& (el = obj.get("Id")) != null) {
|
||||
type = el.getAsInt();
|
||||
}
|
||||
/*EventType typeObject = app.db.eventTypeDao().getFullByIdNow(profileId, type);
|
||||
/*EventType typeObject = app.db.eventTypeDao().getByIdNow(profileId, type);
|
||||
if (typeObject == null) {
|
||||
getCustomTypes = true;
|
||||
}*/
|
||||
@ -2615,21 +2761,21 @@ public class Librus implements OldEdziennikInterface {
|
||||
});
|
||||
}
|
||||
|
||||
private void getHomeworks() {
|
||||
private void getHomework() {
|
||||
if (!premium) {
|
||||
r("finish", "Homeworks");
|
||||
r("finish", "Homework");
|
||||
return;
|
||||
}
|
||||
callback.onActionStarted(R.string.sync_action_syncing_homework);
|
||||
apiRequest("HomeWorkAssignments", data -> {
|
||||
if (data == null) {
|
||||
r("finish", "Homeworks");
|
||||
r("finish", "Homework");
|
||||
return;
|
||||
}
|
||||
JsonArray homeworks = data.get("HomeWorkAssignments").getAsJsonArray();
|
||||
JsonArray homeworkList = data.get("HomeWorkAssignments").getAsJsonArray();
|
||||
//d("Got Grades: "+events.toString());
|
||||
try {
|
||||
for (JsonElement homeworkEl : homeworks) {
|
||||
for (JsonElement homeworkEl : homeworkList) {
|
||||
JsonObject homework = homeworkEl.getAsJsonObject();
|
||||
|
||||
JsonElement el;
|
||||
@ -2680,7 +2826,7 @@ public class Librus implements OldEdziennikInterface {
|
||||
eventList.add(eventObject);
|
||||
metadataList.add(new Metadata(profileId, Metadata.TYPE_EVENT, eventObject.id, profile.getEmpty(), profile.getEmpty(), addedDate.getInMillis()));
|
||||
}
|
||||
r("finish", "Homeworks");
|
||||
r("finish", "Homework");
|
||||
}
|
||||
catch (Exception e) {
|
||||
finishWithError(new AppError(TAG, 2648, CODE_OTHER, e, data));
|
||||
@ -2781,11 +2927,11 @@ public class Librus implements OldEdziennikInterface {
|
||||
}
|
||||
|
||||
private SparseArray<Pair<Integer, String>> attendanceTypes = new SparseArray<>();
|
||||
private void getAttendancesTypes() {
|
||||
private void getAttendanceTypes() {
|
||||
callback.onActionStarted(R.string.sync_action_syncing_attendance_types);
|
||||
apiRequest("Attendances/Types", data -> {
|
||||
if (data == null) {
|
||||
r("finish", "AttendancesTypes");
|
||||
r("finish", "AttendanceTypes");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
@ -2800,7 +2946,7 @@ public class Librus implements OldEdziennikInterface {
|
||||
)
|
||||
);
|
||||
}
|
||||
r("finish", "AttendancesTypes");
|
||||
r("finish", "AttendanceTypes");
|
||||
}
|
||||
catch (Exception e) {
|
||||
finishWithError(new AppError(TAG, 2782, CODE_OTHER, e, data));
|
||||
@ -2808,18 +2954,18 @@ public class Librus implements OldEdziennikInterface {
|
||||
});
|
||||
}
|
||||
|
||||
private void getAttendances() {
|
||||
callback.onActionStarted(R.string.sync_action_syncing_attendances);
|
||||
private void getAttendance() {
|
||||
callback.onActionStarted(R.string.sync_action_syncing_attendance);
|
||||
apiRequest("Attendances"+(fullSync ? "" : "?dateFrom="+ Date.getToday().stepForward(0, -1, 0).getStringY_m_d()), data -> {
|
||||
if (data == null) {
|
||||
r("finish", "Attendances");
|
||||
r("finish", "Attendance");
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
JsonArray jAttendances = data.get("Attendances").getAsJsonArray();
|
||||
JsonArray jAttendance = data.get("Attendances").getAsJsonArray();
|
||||
|
||||
for (JsonElement attendanceEl : jAttendances) {
|
||||
for (JsonElement attendanceEl : jAttendance) {
|
||||
JsonObject attendance = attendanceEl.getAsJsonObject();
|
||||
|
||||
int type = attendance.getAsJsonObject("Type").get("Id").getAsInt();
|
||||
@ -2885,7 +3031,7 @@ public class Librus implements OldEdziennikInterface {
|
||||
metadataList.add(new Metadata(profileId, Metadata.TYPE_ATTENDANCE, attendanceObject.id, profile.getEmpty(), profile.getEmpty(), addedDate));
|
||||
}
|
||||
}
|
||||
r("finish", "Attendances");
|
||||
r("finish", "Attendance");
|
||||
}
|
||||
catch (Exception e) {
|
||||
finishWithError(new AppError(TAG, 2872, CODE_OTHER, e, data));
|
||||
@ -3000,6 +3146,10 @@ public class Librus implements OldEdziennikInterface {
|
||||
|
||||
private SparseArray<String> teacherFreeDaysTypes = new SparseArray<>();
|
||||
private void getTeacherFreeDaysTypes() {
|
||||
if (!fullSync) {
|
||||
r("finish", "TeacherFreeDaysTypes");
|
||||
return;
|
||||
}
|
||||
callback.onActionStarted(R.string.sync_action_syncing_teacher_free_days_types);
|
||||
apiRequest("TeacherFreeDays/Types", data -> {
|
||||
if (data == null) {
|
||||
@ -3034,27 +3184,45 @@ public class Librus implements OldEdziennikInterface {
|
||||
JsonObject freeDay = freeDayEl.getAsJsonObject();
|
||||
|
||||
long id = freeDay.get("Id").getAsLong();
|
||||
long teacherId = freeDay.getAsJsonObject("Teacher").get("Id").getAsLong();
|
||||
|
||||
Date dateFrom = Date.fromY_m_d(freeDay.get("DateFrom").getAsString());
|
||||
Date dateTo = Date.fromY_m_d(freeDay.get("DateTo").getAsString());
|
||||
|
||||
int type = freeDay.getAsJsonObject("Type").get("Id").getAsInt();
|
||||
String topic = teacherFreeDaysTypes.get(type)+"\n"+(dateFrom.getValue() != dateTo.getValue() ? dateFrom.getFormattedString()+" - "+dateTo.getFormattedString() : "");
|
||||
Event eventObject = new Event(
|
||||
Time timeFrom = null;
|
||||
Time timeTo = null;
|
||||
|
||||
if (freeDay.get("TimeFrom") != null && freeDay.get("TimeTo") != null) {
|
||||
timeFrom = Time.fromH_m_s(freeDay.get("TimeFrom").getAsString());
|
||||
timeTo = Time.fromH_m_s(freeDay.get("TimeTo").getAsString());
|
||||
}
|
||||
|
||||
long type = freeDay.getAsJsonObject("Type").get("Id").getAsLong();
|
||||
|
||||
//String topic = teacherFreeDaysTypes.get(type)+"\n"+(dateFrom.getValue() != dateTo.getValue() ? dateFrom.getFormattedString()+" - "+dateTo.getFormattedString() : "");
|
||||
|
||||
TeacherAbsence teacherAbsence = new TeacherAbsence(
|
||||
profileId,
|
||||
id,
|
||||
teacherId,
|
||||
type,
|
||||
dateFrom,
|
||||
null,
|
||||
topic,
|
||||
-1,
|
||||
TYPE_TEACHER_ABSENCE,
|
||||
false,
|
||||
freeDay.getAsJsonObject("Teacher").get("Id").getAsLong(),
|
||||
-1,
|
||||
-1
|
||||
dateTo,
|
||||
timeFrom,
|
||||
timeTo
|
||||
);
|
||||
eventList.add(eventObject);
|
||||
metadataList.add(new Metadata(profileId, Metadata.TYPE_EVENT, eventObject.id, profile.getEmpty(), profile.getEmpty(), System.currentTimeMillis()));
|
||||
|
||||
teacherAbsenceList.add(teacherAbsence);
|
||||
metadataList.add(
|
||||
new Metadata(
|
||||
profileId,
|
||||
Metadata.TYPE_TEACHER_ABSENCE,
|
||||
teacherAbsence.getId(),
|
||||
true,
|
||||
true,
|
||||
System.currentTimeMillis())
|
||||
);
|
||||
|
||||
}
|
||||
r("finish", "TeacherFreeDays");
|
||||
}
|
||||
@ -3064,6 +3232,26 @@ public class Librus implements OldEdziennikInterface {
|
||||
});
|
||||
}
|
||||
|
||||
private void getSchoolFreeDays() {
|
||||
callback.onActionStarted(R.string.sync_action_syncing_school_free_days);
|
||||
apiRequest("SchoolFreeDays" + (unitId != -1 ? "?unit=" + unitId : ""), data -> {
|
||||
if (data == null) {
|
||||
r("finish", "SchoolFreeDays");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
JsonArray jFreeDays = data.get("SchoolFreeDays").getAsJsonArray();
|
||||
|
||||
for (JsonElement freeDayEl: jFreeDays) {
|
||||
continue;
|
||||
}
|
||||
r("finish", "SchoolFreeDays");
|
||||
} catch (Exception e) {
|
||||
finishWithError(new AppError(TAG, 3069, CODE_OTHER, e, data));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void getMessagesLogin() {
|
||||
if (synergiaPassword == null) {
|
||||
// skip messages
|
||||
@ -3250,10 +3438,10 @@ public class Librus implements OldEdziennikInterface {
|
||||
configurableEndpoints.put("Grades", new Endpoint("Grades",true, false, profile.getChangedEndpoints()));
|
||||
configurableEndpoints.put("PointGrades", new Endpoint("PointGrades",true, false, profile.getChangedEndpoints()));
|
||||
configurableEndpoints.put("Events", new Endpoint("Events",true, false, profile.getChangedEndpoints()));
|
||||
configurableEndpoints.put("Homeworks", new Endpoint("Homeworks",true, false, profile.getChangedEndpoints()));
|
||||
configurableEndpoints.put("Homework", new Endpoint("Homework",true, false, profile.getChangedEndpoints()));
|
||||
configurableEndpoints.put("LuckyNumbers", new Endpoint("LuckyNumbers",true, false, profile.getChangedEndpoints()));
|
||||
configurableEndpoints.put("Notices", new Endpoint("Notices",true, false, profile.getChangedEndpoints()));
|
||||
configurableEndpoints.put("Attendances", new Endpoint("Attendances",true, false, profile.getChangedEndpoints()));
|
||||
configurableEndpoints.put("Attendance", new Endpoint("Attendance",true, false, profile.getChangedEndpoints()));
|
||||
configurableEndpoints.put("Announcements", new Endpoint("Announcements",true, true, profile.getChangedEndpoints()));
|
||||
configurableEndpoints.put("PtMeetings", new Endpoint("PtMeetings",true, true, profile.getChangedEndpoints()));
|
||||
configurableEndpoints.put("TeacherFreeDays", new Endpoint("TeacherFreeDays",false, false, profile.getChangedEndpoints()));
|
||||
@ -3661,4 +3849,4 @@ public class Librus implements OldEdziennikInterface {
|
||||
public MessagesComposeInfo getComposeInfo(@NonNull ProfileFull profile) {
|
||||
return new MessagesComposeInfo(0, 0, 150, 20000);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.api;
|
||||
package pl.szczodrzynski.edziennik.data.api;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
@ -40,66 +40,66 @@ import im.wangchao.mhttp.callback.TextCallbackHandler;
|
||||
import pl.szczodrzynski.edziennik.App;
|
||||
import pl.szczodrzynski.edziennik.BuildConfig;
|
||||
import pl.szczodrzynski.edziennik.R;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.AttachmentGetCallback;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.LoginCallback;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.MessageGetCallback;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.RecipientListGetCallback;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Attendance;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Event;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Grade;
|
||||
import pl.szczodrzynski.edziennik.datamodels.GradeCategory;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Lesson;
|
||||
import pl.szczodrzynski.edziennik.datamodels.LessonChange;
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore;
|
||||
import pl.szczodrzynski.edziennik.datamodels.LuckyNumber;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Message;
|
||||
import pl.szczodrzynski.edziennik.datamodels.MessageFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.MessageRecipient;
|
||||
import pl.szczodrzynski.edziennik.datamodels.MessageRecipientFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Metadata;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Notice;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile;
|
||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Subject;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Teacher;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Team;
|
||||
import pl.szczodrzynski.edziennik.messages.MessagesComposeInfo;
|
||||
import pl.szczodrzynski.edziennik.models.Date;
|
||||
import pl.szczodrzynski.edziennik.models.Endpoint;
|
||||
import pl.szczodrzynski.edziennik.models.Time;
|
||||
import pl.szczodrzynski.edziennik.models.Week;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.AttachmentGetCallback;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.LoginCallback;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.MessageGetCallback;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.RecipientListGetCallback;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.events.Event;
|
||||
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.lessons.Lesson;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.luckynumber.LuckyNumber;
|
||||
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.MessageRecipient;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipientFull;
|
||||
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.profiles.Profile;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team;
|
||||
import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesComposeInfo;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Endpoint;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Week;
|
||||
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_INVALID_LOGIN;
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_MAINTENANCE;
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_OTHER;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT_EXCUSED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_BELATED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_CUSTOM;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_PRESENT;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_RELEASED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_DEFAULT;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_EXAM;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_SHORT_QUIZ;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_MOBIDZIENNIK;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_DELETED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_RECEIVED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_SENT;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_INVALID_LOGIN;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_MAINTENANCE;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OTHER;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT_EXCUSED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_BELATED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_CUSTOM;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_PRESENT;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_RELEASED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_DEFAULT;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_EXAM;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_SHORT_QUIZ;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_MOBIDZIENNIK;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_DELETED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_RECEIVED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_SENT;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.bs;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.crc16;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.d;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.monthFromName;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.strToInt;
|
||||
|
||||
public class Mobidziennik implements OldEdziennikInterface {
|
||||
public class Mobidziennik implements EdziennikInterface {
|
||||
public Mobidziennik(App app) {
|
||||
this.app = app;
|
||||
}
|
||||
@ -150,7 +150,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
||||
private String loginPassword = null;
|
||||
private int studentId = -1;
|
||||
|
||||
private long attendancesLastSync = 0;
|
||||
private long attendanceLastSync = 0;
|
||||
|
||||
private boolean prepare(@NonNull Context activityContext, @NonNull SyncCallback callback, int profileId, @Nullable Profile profile, @NonNull LoginStore loginStore) {
|
||||
this.activityContext = activityContext;
|
||||
@ -171,7 +171,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
||||
return false;
|
||||
}
|
||||
this.studentId = profile == null ? -1 : profile.getStudentData("studentId", -1);
|
||||
this.attendancesLastSync = profile == null ? 0 : profile.getStudentData("attendancesLastSync", (long)0);
|
||||
this.attendanceLastSync = profile == null ? 0 : profile.getStudentData("attendanceLastSync", (long)0);
|
||||
fakeLogin = BuildConfig.DEBUG && loginUsername.toLowerCase().startsWith("fake");
|
||||
|
||||
teamList = profileId == -1 ? new ArrayList<>() : app.db.teamDao().getAllNow(profileId);
|
||||
@ -204,7 +204,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
||||
targetEndpoints = new ArrayList<>();
|
||||
targetEndpoints.add("GetData");
|
||||
targetEndpoints.add("ProcessData");
|
||||
targetEndpoints.add("Attendances");
|
||||
targetEndpoints.add("Attendance");
|
||||
targetEndpoints.add("ClassCalendar");
|
||||
targetEndpoints.add("GradeDetails");
|
||||
targetEndpoints.add("NoticeDetails");
|
||||
@ -256,8 +256,8 @@ public class Mobidziennik implements OldEdziennikInterface {
|
||||
case FEATURE_NOTICES:
|
||||
targetEndpoints.add("NoticeDetails");
|
||||
break;
|
||||
case FEATURE_ATTENDANCES:
|
||||
targetEndpoints.add("Attendances");
|
||||
case FEATURE_ATTENDANCE:
|
||||
targetEndpoints.add("Attendance");
|
||||
break;
|
||||
case FEATURE_MESSAGES_INBOX:
|
||||
targetEndpoints.add("MessagesInbox");
|
||||
@ -314,8 +314,8 @@ public class Mobidziennik implements OldEdziennikInterface {
|
||||
case "NoticeDetails":
|
||||
getNoticeDetails();
|
||||
break;
|
||||
case "Attendances":
|
||||
getAttendances();
|
||||
case "Attendance":
|
||||
getAttendance();
|
||||
break;
|
||||
case "Messages":
|
||||
getAllMessages();
|
||||
@ -597,7 +597,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
||||
processLessons(table);
|
||||
}
|
||||
if (i == 16) {
|
||||
processAttendances(table);
|
||||
processAttendance(table);
|
||||
}
|
||||
if (i == 17) {
|
||||
processNotices(table);
|
||||
@ -609,7 +609,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
||||
processEvents(table);
|
||||
}
|
||||
if (i == 23) {
|
||||
processHomeworks(table);
|
||||
processHomework(table);
|
||||
}
|
||||
if (i == 24) {
|
||||
processTimetable(table);
|
||||
@ -794,7 +794,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
||||
switch (e.tagName()) {
|
||||
case "div": {
|
||||
//d(TAG, "Outer HTML "+e.outerHtml());
|
||||
Matcher matcher = Pattern.compile("<div.*?>\\n*\\s*(.+?)\\n*(?:<.*?)??</div>", Pattern.DOTALL).matcher(e.outerHtml());
|
||||
Matcher matcher = Pattern.compile("<div.*?>\\n*\\s*(.+?)\\s*\\n*(?:<.*?)??</div>", Pattern.DOTALL).matcher(e.outerHtml());
|
||||
if (matcher.find()) {
|
||||
subjectName = matcher.group(1);
|
||||
}
|
||||
@ -1051,20 +1051,20 @@ public class Mobidziennik implements OldEdziennikInterface {
|
||||
this.lessonId = lessonId;
|
||||
}
|
||||
}
|
||||
private Date attendancesCheckDate = Week.getWeekStart();
|
||||
private void getAttendances() {
|
||||
r("finish", "Attendances");
|
||||
// TODO: 2019-09-10 please download attendances from /dziennik/frekwencja. /mobile does not work above v13.0
|
||||
private Date attendanceCheckDate = Week.getWeekStart();
|
||||
private void getAttendance() {
|
||||
r("finish", "Attendance");
|
||||
// TODO: 2019-09-10 please download attendance from /dziennik/frekwencja. /mobile does not work above v13.0
|
||||
if (true) {
|
||||
return;
|
||||
}
|
||||
callback.onActionStarted(R.string.sync_action_syncing_attendances);
|
||||
d(TAG, "Get attendances for week "+attendancesCheckDate.getStringY_m_d());
|
||||
callback.onActionStarted(R.string.sync_action_syncing_attendance);
|
||||
d(TAG, "Get attendance for week "+ attendanceCheckDate.getStringY_m_d());
|
||||
Request.builder()
|
||||
.url(fakeLogin ? "https://szkolny.eu/mobimobi/mobi_mod_frekwencja.php" : "https://" + loginServerName + ".mobidziennik.pl/mobile/frekwencja")
|
||||
.userAgent(System.getProperty("http.agent"))
|
||||
.addParameter("uczen", studentId)
|
||||
.addParameter("data_poniedzialek", attendancesCheckDate.getStringY_m_d())
|
||||
.addParameter("data_poniedzialek", attendanceCheckDate.getStringY_m_d())
|
||||
.post()
|
||||
.callback(new TextCallbackHandler() {
|
||||
@Override
|
||||
@ -1076,11 +1076,11 @@ public class Mobidziennik implements OldEdziennikInterface {
|
||||
public void onSuccess(String data, Response response) {
|
||||
// just skip any failures here
|
||||
if (data == null || data.equals("")) {
|
||||
r("finish", "Attendances");
|
||||
r("finish", "Attendance");
|
||||
return;
|
||||
}
|
||||
if (data.contains("nie-pamietam-hasla")) {
|
||||
r("finish", "Attendances");
|
||||
r("finish", "Attendance");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1135,7 +1135,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
||||
continue;
|
||||
AttendanceLessonRange range = ranges.get(currentIndex);
|
||||
|
||||
Date date = attendancesCheckDate.clone().stepForward(0, 0, range.weekDay);
|
||||
Date date = attendanceCheckDate.clone().stepForward(0, 0, range.weekDay);
|
||||
long addedDate = date.combineWith(range.startTime);
|
||||
|
||||
int markerIndex = 0;
|
||||
@ -1201,7 +1201,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
||||
markerIndex++;
|
||||
attendanceList.add(attendanceObject);
|
||||
if (attendanceObject.type != TYPE_PRESENT) {
|
||||
boolean markAsRead = onlyFeature == FEATURE_ATTENDANCES && attendancesLastSync == 0;
|
||||
boolean markAsRead = onlyFeature == FEATURE_ATTENDANCE && attendanceLastSync == 0;
|
||||
metadataList.add(new Metadata(profileId, Metadata.TYPE_ATTENDANCE, attendanceObject.id, profile.getEmpty() || markAsRead, profile.getEmpty() || markAsRead, addedDate));
|
||||
}
|
||||
}
|
||||
@ -1209,40 +1209,40 @@ public class Mobidziennik implements OldEdziennikInterface {
|
||||
} catch (Exception e) {
|
||||
Crashlytics.logException(e);
|
||||
e.printStackTrace();
|
||||
if (onlyFeature == FEATURE_ATTENDANCES)
|
||||
if (onlyFeature == FEATURE_ATTENDANCE)
|
||||
finishWithError(new AppError(TAG, 955, CODE_OTHER, response, e, data));
|
||||
else
|
||||
r("finish", "Attendances");
|
||||
r("finish", "Attendance");
|
||||
return;
|
||||
}
|
||||
|
||||
if (onlyFeature == FEATURE_ATTENDANCES) {
|
||||
// syncing attendances exclusively
|
||||
if (attendancesLastSync == 0) {
|
||||
// first sync - get attendances until it's start of the school year
|
||||
attendancesLastSync = profile.getSemesterStart(1).getInMillis();
|
||||
if (onlyFeature == FEATURE_ATTENDANCE) {
|
||||
// syncing attendance exclusively
|
||||
if (attendanceLastSync == 0) {
|
||||
// first sync - get attendance until it's start of the school year
|
||||
attendanceLastSync = profile.getSemesterStart(1).getInMillis();
|
||||
}
|
||||
Date lastSyncDate = Date.fromMillis(attendancesLastSync);
|
||||
Date lastSyncDate = Date.fromMillis(attendanceLastSync);
|
||||
lastSyncDate.stepForward(0, 0, -7);
|
||||
if (lastSyncDate.getValue() < attendancesCheckDate.getValue()) {
|
||||
attendancesCheckDate.stepForward(0, 0, -7);
|
||||
r("get", "Attendances");
|
||||
if (lastSyncDate.getValue() < attendanceCheckDate.getValue()) {
|
||||
attendanceCheckDate.stepForward(0, 0, -7);
|
||||
r("get", "Attendance");
|
||||
}
|
||||
else {
|
||||
profile.putStudentData("attendancesLastSync", System.currentTimeMillis());
|
||||
r("finish", "Attendances");
|
||||
profile.putStudentData("attendanceLastSync", System.currentTimeMillis());
|
||||
r("finish", "Attendance");
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (attendancesLastSync != 0) {
|
||||
if (attendanceLastSync != 0) {
|
||||
// not a first sync
|
||||
Date lastSyncDate = Date.fromMillis(attendancesLastSync);
|
||||
Date lastSyncDate = Date.fromMillis(attendanceLastSync);
|
||||
lastSyncDate.stepForward(0, 0, 2);
|
||||
if (lastSyncDate.getValue() >= attendancesCheckDate.getValue()) {
|
||||
profile.putStudentData("attendancesLastSync", System.currentTimeMillis());
|
||||
if (lastSyncDate.getValue() >= attendanceCheckDate.getValue()) {
|
||||
profile.putStudentData("attendanceLastSync", System.currentTimeMillis());
|
||||
}
|
||||
}
|
||||
r("finish", "Attendances");
|
||||
r("finish", "Attendance");
|
||||
}
|
||||
}
|
||||
})
|
||||
@ -1456,8 +1456,8 @@ public class Mobidziennik implements OldEdziennikInterface {
|
||||
}
|
||||
String[] user = userStr.split("\\|", Integer.MAX_VALUE);
|
||||
|
||||
teachersMap.put(strToInt(user[0]), user[5]+" "+user[4]);
|
||||
teacherList.add(new Teacher(profileId, strToInt(user[0]), user[4], user[5]));
|
||||
teachersMap.put(strToInt(user[0]), user[5].trim()+" "+user[4].trim());
|
||||
teacherList.add(new Teacher(profileId, strToInt(user[0]), user[4].trim(), user[5].trim()));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1675,12 +1675,12 @@ public class Mobidziennik implements OldEdziennikInterface {
|
||||
}
|
||||
}
|
||||
|
||||
private void processAttendances(String table)
|
||||
private void processAttendance(String table)
|
||||
{
|
||||
if (true)
|
||||
return;
|
||||
String[] attendances = table.split("\n");
|
||||
for (String attendanceStr: attendances)
|
||||
String[] attendanceList = table.split("\n");
|
||||
for (String attendanceStr: attendanceList)
|
||||
{
|
||||
if (attendanceStr.isEmpty()) {
|
||||
continue;
|
||||
@ -1718,7 +1718,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
||||
mobiLesson.date,
|
||||
mobiLesson.startTime,
|
||||
type);
|
||||
attendanceList.add(attendanceObject);
|
||||
this.attendanceList.add(attendanceObject);
|
||||
metadataList.add(new Metadata(profileId, Metadata.TYPE_ATTENDANCE, attendanceObject.id, profile.getEmpty(), profile.getEmpty(), System.currentTimeMillis()));
|
||||
}
|
||||
}
|
||||
@ -1891,11 +1891,11 @@ public class Mobidziennik implements OldEdziennikInterface {
|
||||
}
|
||||
}
|
||||
|
||||
private void processHomeworks(String table)
|
||||
private void processHomework(String table)
|
||||
{
|
||||
String[] homeworks = table.split("\n");
|
||||
String[] homeworkList = table.split("\n");
|
||||
Date today = Date.getToday();
|
||||
for (String homeworkStr: homeworks)
|
||||
for (String homeworkStr: homeworkList)
|
||||
{
|
||||
if (homeworkStr.isEmpty()) {
|
||||
continue;
|
||||
@ -1958,7 +1958,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
||||
for(int i = 0; i < teachersMap.size(); i++) {
|
||||
int key = teachersMap.keyAt(i);
|
||||
String str = teachersMap.valueAt(i);
|
||||
if ((lesson[7] + " " + lesson[6]).equalsIgnoreCase(str)) {
|
||||
if ((lesson[7].trim() + " " + lesson[6].trim()).equalsIgnoreCase(str)) {
|
||||
lessonObject.teacherId = key;
|
||||
}
|
||||
}
|
||||
@ -2001,7 +2001,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
||||
for(int i = 0; i < teachersMap.size(); i++) {
|
||||
int key = teachersMap.keyAt(i);
|
||||
String str = teachersMap.valueAt(i);
|
||||
if ((lesson[7] + " " + lesson[6]).equalsIgnoreCase(str)) {
|
||||
if ((lesson[7].trim() + " " + lesson[6].trim()).equalsIgnoreCase(str)) {
|
||||
lessonChange.teacherId = key;
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.api;
|
||||
package pl.szczodrzynski.edziennik.data.api;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
@ -35,57 +35,57 @@ import okhttp3.OkHttpClient;
|
||||
import okio.Buffer;
|
||||
import pl.szczodrzynski.edziennik.App;
|
||||
import pl.szczodrzynski.edziennik.R;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.AttachmentGetCallback;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.LoginCallback;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.MessageGetCallback;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.RecipientListGetCallback;
|
||||
import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Attendance;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Event;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Grade;
|
||||
import pl.szczodrzynski.edziennik.datamodels.GradeCategory;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Lesson;
|
||||
import pl.szczodrzynski.edziennik.datamodels.LessonChange;
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Message;
|
||||
import pl.szczodrzynski.edziennik.datamodels.MessageFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.MessageRecipient;
|
||||
import pl.szczodrzynski.edziennik.datamodels.MessageRecipientFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Metadata;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Notice;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile;
|
||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Subject;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Teacher;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Team;
|
||||
import pl.szczodrzynski.edziennik.messages.MessagesComposeInfo;
|
||||
import pl.szczodrzynski.edziennik.models.Date;
|
||||
import pl.szczodrzynski.edziennik.models.Endpoint;
|
||||
import pl.szczodrzynski.edziennik.models.Time;
|
||||
import pl.szczodrzynski.edziennik.models.Week;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.AttachmentGetCallback;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.LoginCallback;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.MessageGetCallback;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.RecipientListGetCallback;
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.events.Event;
|
||||
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.lessons.Lesson;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange;
|
||||
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.MessageRecipient;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipientFull;
|
||||
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.profiles.Profile;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team;
|
||||
import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesComposeInfo;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Endpoint;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Week;
|
||||
import pl.szczodrzynski.edziennik.utils.Utils;
|
||||
|
||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_OTHER;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT_EXCUSED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_BELATED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_BELATED_EXCUSED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_PRESENT;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_RELEASED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_EXAM;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_SHORT_QUIZ;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CANCELLED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CHANGE;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_VULCAN;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_RECEIVED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_SENT;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_MESSAGE;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_NEUTRAL;
|
||||
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OTHER;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT_EXCUSED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_BELATED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_BELATED_EXCUSED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_PRESENT;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_RELEASED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_EXAM;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_SHORT_QUIZ;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_FINAL;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_PROPOSED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CANCELLED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CHANGE;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_VULCAN;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_RECEIVED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_SENT;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_MESSAGE;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.notices.Notice.TYPE_NEUTRAL;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.c;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.crc16;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.d;
|
||||
@ -93,7 +93,7 @@ import static pl.szczodrzynski.edziennik.utils.Utils.getGradeValue;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.getVulcanGradeColor;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.intToStr;
|
||||
|
||||
public class Vulcan implements OldEdziennikInterface {
|
||||
public class Vulcan implements EdziennikInterface {
|
||||
public Vulcan(App app) {
|
||||
this.app = app;
|
||||
}
|
||||
@ -108,11 +108,12 @@ public class Vulcan implements OldEdziennikInterface {
|
||||
private static final String ENDPOINT_GRADES = "mobile-api/Uczen.v3.Uczen/Oceny";
|
||||
private static final String ENDPOINT_GRADES_PROPOSITIONS = "mobile-api/Uczen.v3.Uczen/OcenyPodsumowanie";
|
||||
private static final String ENDPOINT_EVENTS = "mobile-api/Uczen.v3.Uczen/Sprawdziany";
|
||||
private static final String ENDPOINT_HOMEWORKS = "mobile-api/Uczen.v3.Uczen/ZadaniaDomowe";
|
||||
private static final String ENDPOINT_HOMEWORK = "mobile-api/Uczen.v3.Uczen/ZadaniaDomowe";
|
||||
private static final String ENDPOINT_NOTICES = "mobile-api/Uczen.v3.Uczen/UwagiUcznia";
|
||||
private static final String ENDPOINT_ATTENDANCES = "mobile-api/Uczen.v3.Uczen/Frekwencje";
|
||||
private static final String ENDPOINT_ATTENDANCE = "mobile-api/Uczen.v3.Uczen/Frekwencje";
|
||||
private static final String ENDPOINT_MESSAGES_RECEIVED = "mobile-api/Uczen.v3.Uczen/WiadomosciOdebrane";
|
||||
private static final String ENDPOINT_MESSAGES_SENT = "mobile-api/Uczen.v3.Uczen/WiadomosciWyslane";
|
||||
private static final String ENDPOINT_MESSAGES_CHANGE_STATUS = "mobile-api/Uczen.v3.Uczen/ZmienStatusWiadomosci";
|
||||
private static final String ENDPOINT_PUSH = "mobile-api/Uczen.v3.Uczen/UstawPushToken";
|
||||
private static final String userAgent = "MobileUserAgent";
|
||||
|
||||
@ -258,9 +259,9 @@ public class Vulcan implements OldEdziennikInterface {
|
||||
targetEndpoints.add("Grades");
|
||||
targetEndpoints.add("ProposedGrades");
|
||||
targetEndpoints.add("Events");
|
||||
targetEndpoints.add("Homeworks");
|
||||
targetEndpoints.add("Homework");
|
||||
targetEndpoints.add("Notices");
|
||||
targetEndpoints.add("Attendances");
|
||||
targetEndpoints.add("Attendance");
|
||||
targetEndpoints.add("MessagesInbox");
|
||||
targetEndpoints.add("MessagesOutbox");
|
||||
targetEndpoints.add("Finish");
|
||||
@ -296,14 +297,14 @@ public class Vulcan implements OldEdziennikInterface {
|
||||
targetEndpoints.add("Grades");
|
||||
targetEndpoints.add("ProposedGrades");
|
||||
break;
|
||||
case FEATURE_HOMEWORKS:
|
||||
targetEndpoints.add("Homeworks");
|
||||
case FEATURE_HOMEWORK:
|
||||
targetEndpoints.add("Homework");
|
||||
break;
|
||||
case FEATURE_NOTICES:
|
||||
targetEndpoints.add("Notices");
|
||||
break;
|
||||
case FEATURE_ATTENDANCES:
|
||||
targetEndpoints.add("Attendances");
|
||||
case FEATURE_ATTENDANCE:
|
||||
targetEndpoints.add("Attendance");
|
||||
break;
|
||||
case FEATURE_MESSAGES_INBOX:
|
||||
targetEndpoints.add("MessagesInbox");
|
||||
@ -379,14 +380,14 @@ public class Vulcan implements OldEdziennikInterface {
|
||||
case "Events":
|
||||
getEvents();
|
||||
break;
|
||||
case "Homeworks":
|
||||
getHomeworks();
|
||||
case "Homework":
|
||||
getHomework();
|
||||
break;
|
||||
case "Notices":
|
||||
getNotices();
|
||||
break;
|
||||
case "Attendances":
|
||||
getAttendances();
|
||||
case "Attendance":
|
||||
getAttendance();
|
||||
break;
|
||||
case "MessagesInbox":
|
||||
getMessagesInbox();
|
||||
@ -427,8 +428,10 @@ public class Vulcan implements OldEdziennikInterface {
|
||||
app.db.noticeDao().clearForSemester(profileId, studentSemesterNumber);
|
||||
app.db.noticeDao().addAll(noticeList);
|
||||
}
|
||||
if (attendanceList.size() > 0)
|
||||
if (attendanceList.size() > 0) {
|
||||
app.db.attendanceDao().clearAfterDate(profileId, getCurrentSemesterStartDate());
|
||||
app.db.attendanceDao().addAll(attendanceList);
|
||||
}
|
||||
if (messageList.size() > 0)
|
||||
app.db.messageDao().addAllIgnore(messageList);
|
||||
if (messageRecipientList.size() > 0)
|
||||
@ -742,7 +745,7 @@ public class Vulcan implements OldEdziennikInterface {
|
||||
studentLoginId = account.get("UzytkownikLoginId").getAsInt();
|
||||
studentClassId = account.get("IdOddzial").getAsInt();
|
||||
studentSemesterId = account.get("IdOkresKlasyfikacyjny").getAsInt();
|
||||
String studentClassName = account.get("OddzialKod").getAsString();
|
||||
String studentClassName = account.get("OkresPoziom").getAsInt()+account.get("OddzialSymbol").getAsString();
|
||||
targetProfile.putStudentData("userName", account.get("UzytkownikNazwa").getAsString());
|
||||
targetProfile.putStudentData("schoolName", schoolName);
|
||||
targetProfile.putStudentData("schoolSymbol", schoolSymbol);
|
||||
@ -1149,7 +1152,7 @@ public class Vulcan implements OldEdziennikInterface {
|
||||
int subjectId = grade.get("IdPrzedmiot").getAsInt();
|
||||
int teacherId = grade.get("IdPracownikD").getAsInt();
|
||||
int categoryId = grade.get("IdKategoria").getAsInt();
|
||||
long addedDate = Date.fromY_m_d(grade.get("DataModyfikacjiTekst").getAsString()).getInMillis();
|
||||
long addedDate = grade.get("DataModyfikacji").getAsLong() * 1000;
|
||||
|
||||
float finalValue = 0.0f;
|
||||
String finalName;
|
||||
@ -1240,9 +1243,9 @@ public class Vulcan implements OldEdziennikInterface {
|
||||
Grade gradeObject = new Grade(
|
||||
profileId,
|
||||
id,
|
||||
finalDescription,
|
||||
color,
|
||||
category,
|
||||
color,
|
||||
finalDescription,
|
||||
finalName,
|
||||
finalValue,
|
||||
weight,
|
||||
@ -1371,7 +1374,7 @@ public class Vulcan implements OldEdziennikInterface {
|
||||
});
|
||||
}
|
||||
|
||||
private void getHomeworks() {
|
||||
private void getHomework() {
|
||||
callback.onActionStarted(R.string.sync_action_syncing_homework);
|
||||
JsonObject json = new JsonObject();
|
||||
json.addProperty("DataPoczatkowa", profile.getEmpty() ? getCurrentSemesterStartDate().getStringY_m_d() : oneMonthBack.getStringY_m_d());
|
||||
@ -1379,10 +1382,10 @@ public class Vulcan implements OldEdziennikInterface {
|
||||
json.addProperty("IdOddzial", studentClassId);
|
||||
json.addProperty("IdUczen", studentId);
|
||||
json.addProperty("IdOkresKlasyfikacyjny", studentSemesterId);
|
||||
apiRequest(schoolSymbol+"/"+ENDPOINT_HOMEWORKS, json, result -> {
|
||||
JsonArray homeworks = result.getAsJsonArray("Data");
|
||||
apiRequest(schoolSymbol+"/"+ ENDPOINT_HOMEWORK, json, result -> {
|
||||
JsonArray homeworkList = result.getAsJsonArray("Data");
|
||||
|
||||
for (JsonElement homeworkEl: homeworks) {
|
||||
for (JsonElement homeworkEl: homeworkList) {
|
||||
JsonObject homework = homeworkEl.getAsJsonObject();
|
||||
|
||||
int id = homework.get("Id").getAsInt();
|
||||
@ -1416,7 +1419,7 @@ public class Vulcan implements OldEdziennikInterface {
|
||||
eventList.add(eventObject);
|
||||
metadataList.add(new Metadata(profileId, Metadata.TYPE_HOMEWORK, eventObject.id, profile.getEmpty(), profile.getEmpty(), System.currentTimeMillis()));
|
||||
}
|
||||
r("finish", "Homeworks");
|
||||
r("finish", "Homework");
|
||||
});
|
||||
}
|
||||
|
||||
@ -1456,18 +1459,18 @@ public class Vulcan implements OldEdziennikInterface {
|
||||
});
|
||||
}
|
||||
|
||||
private void getAttendances() {
|
||||
callback.onActionStarted(R.string.sync_action_syncing_attendances);
|
||||
private void getAttendance() {
|
||||
callback.onActionStarted(R.string.sync_action_syncing_attendance);
|
||||
JsonObject json = new JsonObject();
|
||||
json.addProperty("DataPoczatkowa", profile.getEmpty() ? getCurrentSemesterStartDate().getStringY_m_d() : oneMonthBack.getStringY_m_d());
|
||||
json.addProperty("DataPoczatkowa", true ? getCurrentSemesterStartDate().getStringY_m_d() : oneMonthBack.getStringY_m_d());
|
||||
json.addProperty("DataKoncowa", getCurrentSemesterEndDate().getStringY_m_d());
|
||||
json.addProperty("IdOddzial", studentClassId);
|
||||
json.addProperty("IdUczen", studentId);
|
||||
json.addProperty("IdOkresKlasyfikacyjny", studentSemesterId);
|
||||
apiRequest(schoolSymbol+"/"+ENDPOINT_ATTENDANCES, json, result -> {
|
||||
JsonArray attendances = result.getAsJsonObject("Data").getAsJsonArray("Frekwencje");
|
||||
apiRequest(schoolSymbol+"/"+ ENDPOINT_ATTENDANCE, json, result -> {
|
||||
JsonArray attendanceList = result.getAsJsonObject("Data").getAsJsonArray("Frekwencje");
|
||||
|
||||
for (JsonElement attendanceEl: attendances) {
|
||||
for (JsonElement attendanceEl: attendanceList) {
|
||||
JsonObject attendance = attendanceEl.getAsJsonObject();
|
||||
|
||||
Pair<Integer, String> attendanceCategory = attendanceCategories.get(attendance.get("IdKategoria").getAsInt());
|
||||
@ -1494,20 +1497,20 @@ public class Vulcan implements OldEdziennikInterface {
|
||||
lessonRanges.get(attendance.get("IdPoraLekcji").getAsInt()).first,
|
||||
type);
|
||||
|
||||
attendanceList.add(attendanceObject);
|
||||
this.attendanceList.add(attendanceObject);
|
||||
if (attendanceObject.type != TYPE_PRESENT) {
|
||||
metadataList.add(new Metadata(profileId, Metadata.TYPE_ATTENDANCE, attendanceObject.id, profile.getEmpty(), profile.getEmpty(), attendanceObject.lessonDate.combineWith(attendanceObject.startTime)));
|
||||
}
|
||||
}
|
||||
r("finish", "Attendances");
|
||||
r("finish", "Attendance");
|
||||
});
|
||||
}
|
||||
|
||||
private void getMessagesInbox() {
|
||||
callback.onActionStarted(R.string.sync_action_syncing_messages_inbox);
|
||||
JsonObject json = new JsonObject();
|
||||
json.addProperty("DataPoczatkowa", profile.getEmpty() ? getCurrentSemesterStartDate().getInUnix() : oneMonthBack.getInUnix());
|
||||
json.addProperty("DataKoncowa", Date.getToday().getInUnix());
|
||||
json.addProperty("DataPoczatkowa", true ? getCurrentSemesterStartDate().getInUnix() : oneMonthBack.getInUnix());
|
||||
json.addProperty("DataKoncowa", getCurrentSemesterEndDate().getInUnix());
|
||||
json.addProperty("LoginId", studentLoginId);
|
||||
json.addProperty("IdUczen", studentId);
|
||||
apiRequest(schoolSymbol+"/"+ENDPOINT_MESSAGES_RECEIVED, json, result -> {
|
||||
@ -1557,8 +1560,8 @@ public class Vulcan implements OldEdziennikInterface {
|
||||
}
|
||||
callback.onActionStarted(R.string.sync_action_syncing_messages_outbox);
|
||||
JsonObject json = new JsonObject();
|
||||
json.addProperty("DataPoczatkowa", profile.getEmpty() ? getCurrentSemesterStartDate().getInUnix() : oneMonthBack.getInUnix());
|
||||
json.addProperty("DataKoncowa", Date.getToday().getInUnix());
|
||||
json.addProperty("DataPoczatkowa", true ? getCurrentSemesterStartDate().getInUnix() : oneMonthBack.getInUnix());
|
||||
json.addProperty("DataKoncowa", getCurrentSemesterEndDate().getInUnix());
|
||||
json.addProperty("LoginId", studentLoginId);
|
||||
json.addProperty("IdUczen", studentId);
|
||||
apiRequest(schoolSymbol+"/"+ENDPOINT_MESSAGES_SENT, json, result -> {
|
||||
@ -1632,6 +1635,15 @@ public class Vulcan implements OldEdziennikInterface {
|
||||
recipient.fullName = profile.getStudentNameLong();
|
||||
}
|
||||
if (!message.seen) {
|
||||
studentId = profile.getStudentData("studentId", -1);
|
||||
studentLoginId = profile.getStudentData("studentLoginId", -1);
|
||||
JsonObject json = new JsonObject();
|
||||
json.addProperty("WiadomoscId", message.id);
|
||||
json.addProperty("FolderWiadomosci", "Odebrane");
|
||||
json.addProperty("Status", "Widoczna");
|
||||
json.addProperty("LoginId", studentLoginId);
|
||||
json.addProperty("IdUczen", studentId);
|
||||
apiRequest(schoolSymbol+"/"+ENDPOINT_MESSAGES_CHANGE_STATUS, json, result -> { });
|
||||
app.db.metadataDao().setSeen(profile.getId(), message, true);
|
||||
if (message.type != TYPE_SENT) {
|
||||
app.db.messageRecipientDao().add(new MessageRecipient(profile.getId(), -1, -1, System.currentTimeMillis(), message.id));
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.api.interfaces;
|
||||
package pl.szczodrzynski.edziennik.data.api.interfaces;
|
||||
|
||||
import im.wangchao.mhttp.Request;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.api.interfaces;
|
||||
package pl.szczodrzynski.edziennik.data.api.interfaces;
|
||||
|
||||
import android.content.Context;
|
||||
import androidx.annotation.NonNull;
|
||||
@ -6,15 +6,15 @@ import androidx.annotation.Nullable;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Message;
|
||||
import pl.szczodrzynski.edziennik.datamodels.MessageFull;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile;
|
||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull;
|
||||
import pl.szczodrzynski.edziennik.messages.MessagesComposeInfo;
|
||||
import pl.szczodrzynski.edziennik.models.Endpoint;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore;
|
||||
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.ProfileFull;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher;
|
||||
import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesComposeInfo;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Endpoint;
|
||||
|
||||
public interface OldEdziennikInterface {
|
||||
public interface EdziennikInterface {
|
||||
|
||||
/**
|
||||
* Sync all Edziennik data.
|
||||
@ -34,9 +34,9 @@ public interface OldEdziennikInterface {
|
||||
int FEATURE_TIMETABLE = 1;
|
||||
int FEATURE_AGENDA = 2;
|
||||
int FEATURE_GRADES = 3;
|
||||
int FEATURE_HOMEWORKS = 4;
|
||||
int FEATURE_HOMEWORK = 4;
|
||||
int FEATURE_NOTICES = 5;
|
||||
int FEATURE_ATTENDANCES = 6;
|
||||
int FEATURE_ATTENDANCE = 6;
|
||||
int FEATURE_MESSAGES_INBOX = 7;
|
||||
int FEATURE_MESSAGES_OUTBOX = 8;
|
||||
int FEATURE_ANNOUNCEMENTS = 9;
|
||||
@ -60,7 +60,7 @@ public interface OldEdziennikInterface {
|
||||
*
|
||||
* Updates a database-saved {@code teacherList} with {@code loginId}s.
|
||||
*
|
||||
* A {@link pl.szczodrzynski.edziennik.datamodels.Teacher} is considered as a recipient when its {@code loginId} is not null.
|
||||
* A {@link Teacher} is considered as a recipient when its {@code loginId} is not null.
|
||||
*
|
||||
* May be executed on any thread.
|
||||
*
|
@ -1,10 +1,10 @@
|
||||
package pl.szczodrzynski.edziennik.api.interfaces;
|
||||
package pl.szczodrzynski.edziennik.data.api.interfaces;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import pl.szczodrzynski.edziennik.api.AppError;
|
||||
import pl.szczodrzynski.edziennik.data.api.AppError;
|
||||
|
||||
public interface ErrorCallback {
|
||||
void onError(Context activityContext, @NonNull AppError error);
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.api.interfaces;
|
||||
package pl.szczodrzynski.edziennik.data.api.interfaces;
|
||||
|
||||
public interface LoginCallback {
|
||||
void onSuccess();
|
@ -1,7 +1,6 @@
|
||||
package pl.szczodrzynski.edziennik.api.interfaces;
|
||||
package pl.szczodrzynski.edziennik.data.api.interfaces;
|
||||
|
||||
import pl.szczodrzynski.edziennik.datamodels.Message;
|
||||
import pl.szczodrzynski.edziennik.datamodels.MessageFull;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull;
|
||||
|
||||
/**
|
||||
* Callback containing a {@link MessageFull} which already has its {@code body} and {@code recipients}.
|
@ -0,0 +1,9 @@
|
||||
package pl.szczodrzynski.edziennik.data.api.interfaces;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull;
|
||||
|
||||
public interface MessageListCallback {
|
||||
void onSuccess(List<MessageFull> messageList);
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.api.interfaces;
|
||||
package pl.szczodrzynski.edziennik.data.api.interfaces;
|
||||
|
||||
import androidx.annotation.StringRes;
|
||||
|
@ -0,0 +1,9 @@
|
||||
package pl.szczodrzynski.edziennik.data.api.interfaces;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher;
|
||||
|
||||
public interface RecipientListGetCallback {
|
||||
void onSuccess(List<Teacher> teacherList);
|
||||
}
|
@ -1,15 +1,12 @@
|
||||
package pl.szczodrzynski.edziennik.api.interfaces;
|
||||
package pl.szczodrzynski.edziennik.data.api.interfaces;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import androidx.annotation.StringRes;
|
||||
|
||||
import pl.szczodrzynski.edziennik.api.AppError;
|
||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore;
|
||||
import pl.szczodrzynski.edziennik.datamodels.Profile;
|
||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull;
|
||||
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.ProfileFull;
|
||||
|
||||
/**
|
||||
* A callback used for error reporting, progress information.
|
@ -0,0 +1,6 @@
|
||||
package pl.szczodrzynski.edziennik.data.api.v2
|
||||
|
||||
import pl.szczodrzynski.edziennik.data.api.AppError
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||
|
||||
data class ApiLoginResult(val loginStore: LoginStore, val error: AppError?)
|
@ -0,0 +1,6 @@
|
||||
package pl.szczodrzynski.edziennik.data.api.v2
|
||||
|
||||
import pl.szczodrzynski.edziennik.data.api.AppError
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||
|
||||
data class FirstLoginResult(val profileList: ArrayList<Profile>, val error: AppError?)
|
@ -0,0 +1,12 @@
|
||||
package pl.szczodrzynski.edziennik.data.api.v2.librus.firstlogin
|
||||
|
||||
import pl.szczodrzynski.edziennik.App
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.ProgressCallback
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||
|
||||
class FirstLoginLibrus(val app: App, val loginStore: LoginStore, val progressCallback: ProgressCallback, val onSuccess: (profileList: List<Profile>) -> Unit) {
|
||||
init {
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package pl.szczodrzynski.edziennik.data.api.v2.librus.firstlogin
|
||||
|
||||
import pl.szczodrzynski.edziennik.App
|
||||
import pl.szczodrzynski.edziennik.data.api.interfaces.ProgressCallback
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||
|
||||
class FirstLoginSynergia(val app: App, val loginStore: LoginStore, val progressCallback: ProgressCallback, val onSuccess: (profileList: List<Profile>) -> Unit) {
|
||||
init {
|
||||
|
||||
}
|
||||
}
|
@ -1,12 +1,61 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.sqlite.db.SupportSQLiteDatabase;
|
||||
import androidx.room.Database;
|
||||
import androidx.room.Room;
|
||||
import androidx.room.RoomDatabase;
|
||||
import androidx.room.TypeConverters;
|
||||
import androidx.room.migration.Migration;
|
||||
import pl.szczodrzynski.edziennik.models.Date;
|
||||
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.announcements.Announcement;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.announcements.AnnouncementDao;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.attendance.AttendanceDao;
|
||||
import pl.szczodrzynski.edziennik.data.db.converters.ConverterDate;
|
||||
import pl.szczodrzynski.edziennik.data.db.converters.ConverterJsonObject;
|
||||
import pl.szczodrzynski.edziennik.data.db.converters.ConverterListLong;
|
||||
import pl.szczodrzynski.edziennik.data.db.converters.ConverterListString;
|
||||
import pl.szczodrzynski.edziennik.data.db.converters.ConverterTime;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.debuglog.DebugLog;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.debuglog.DebugLogDao;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.events.Event;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.events.EventDao;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.events.EventType;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.events.EventTypeDao;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.feedback.FeedbackMessage;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.feedback.FeedbackMessageDao;
|
||||
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.GradeCategoryDao;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeDao;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.lessons.Lesson;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChangeDao;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonDao;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStoreDao;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.luckynumber.LuckyNumber;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.luckynumber.LuckyNumberDao;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageDao;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipient;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipientDao;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.MetadataDao;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.notices.NoticeDao;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileDao;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.subjects.SubjectDao;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.teachers.TeacherAbsence;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.teachers.TeacherAbsenceDao;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.teachers.TeacherDao;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.teams.TeamDao;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
@ -14,6 +63,7 @@ import android.content.Context;
|
||||
Grade.class,
|
||||
//GradeCategory.class,
|
||||
Teacher.class,
|
||||
TeacherAbsence.class,
|
||||
Subject.class,
|
||||
Notice.class,
|
||||
Lesson.class,
|
||||
@ -31,7 +81,7 @@ import android.content.Context;
|
||||
Message.class,
|
||||
MessageRecipient.class,
|
||||
DebugLog.class,
|
||||
Metadata.class}, version = 52)
|
||||
Metadata.class}, version = 54)
|
||||
@TypeConverters({
|
||||
ConverterTime.class,
|
||||
ConverterDate.class,
|
||||
@ -43,6 +93,7 @@ public abstract class AppDb extends RoomDatabase {
|
||||
public abstract GradeDao gradeDao();
|
||||
//public abstract GradeCategoryDao gradeCategoryDao();
|
||||
public abstract TeacherDao teacherDao();
|
||||
public abstract TeacherAbsenceDao teacherAbsenceDao();
|
||||
public abstract SubjectDao subjectDao();
|
||||
public abstract NoticeDao noticeDao();
|
||||
public abstract LessonDao lessonDao();
|
||||
@ -486,6 +537,27 @@ public abstract class AppDb extends RoomDatabase {
|
||||
database.execSQL("ALTER TABLE teachers ADD teacherTypeDescription TEXT DEFAULT NULL");
|
||||
}
|
||||
};
|
||||
private static final Migration MIGRATION_52_53 = new Migration(52, 53) {
|
||||
@Override
|
||||
public void migrate(@NonNull SupportSQLiteDatabase database) {
|
||||
database.execSQL("CREATE TABLE IF NOT EXISTS teacherAbsence (" +
|
||||
"profileId INTEGER NOT NULL," +
|
||||
"teacherAbsenceId INTEGER NOT NULL," +
|
||||
"teacherId INTEGER NOT NULL," +
|
||||
"teacherAbsenceType INTEGER NOT NULL," +
|
||||
"teacherAbsenceDateFrom TEXT NOT NULL," +
|
||||
"teacherAbsenceDateTo TEXT NOT NULL," +
|
||||
"PRIMARY KEY(profileId, teacherAbsenceId)" +
|
||||
")");
|
||||
}
|
||||
};
|
||||
private static final Migration MIGRATION_53_54 = new Migration(53, 54) {
|
||||
@Override
|
||||
public void migrate(@NonNull SupportSQLiteDatabase database) {
|
||||
database.execSQL("ALTER TABLE teacherAbsence ADD teacherAbsenceTimeFrom TEXT DEFAULT NULL");
|
||||
database.execSQL("ALTER TABLE teacherAbsence ADD teacherAbsenceTimeTo TEXT DEFAULT NULL");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
public static AppDb getDatabase(final Context context) {
|
||||
@ -535,7 +607,10 @@ public abstract class AppDb extends RoomDatabase {
|
||||
MIGRATION_48_49,
|
||||
MIGRATION_49_50,
|
||||
MIGRATION_50_51,
|
||||
MIGRATION_51_52)
|
||||
MIGRATION_51_52,
|
||||
MIGRATION_52_53,
|
||||
MIGRATION_53_54
|
||||
)
|
||||
.allowMainThreadQueries()
|
||||
//.fallbackToDestructiveMigration()
|
||||
.build();
|
@ -1,8 +1,8 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.converters;
|
||||
|
||||
import androidx.room.TypeConverter;
|
||||
|
||||
import pl.szczodrzynski.edziennik.models.Date;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||
|
||||
public class ConverterDate {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.converters;
|
||||
|
||||
import androidx.room.TypeConverter;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.converters;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.converters;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
@ -1,8 +1,8 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.converters;
|
||||
|
||||
import androidx.room.TypeConverter;
|
||||
|
||||
import pl.szczodrzynski.edziennik.models.Time;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||
|
||||
public class ConverterTime {
|
||||
|
@ -1,11 +1,11 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.announcements;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.Ignore;
|
||||
import androidx.room.Index;
|
||||
import pl.szczodrzynski.edziennik.models.Date;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||
|
||||
@Entity(tableName = "announcements",
|
||||
primaryKeys = {"profileId", "announcementId"},
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.announcements;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -11,7 +11,9 @@ import androidx.room.RawQuery;
|
||||
import androidx.sqlite.db.SimpleSQLiteQuery;
|
||||
import androidx.sqlite.db.SupportSQLiteQuery;
|
||||
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_ANNOUNCEMENT;
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata;
|
||||
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_ANNOUNCEMENT;
|
||||
|
||||
@Dao
|
||||
public abstract class AnnouncementDao {
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.announcements;
|
||||
|
||||
public class AnnouncementFull extends Announcement {
|
||||
public String teacherFullName = "";
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.attendance;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.room.ColumnInfo;
|
||||
@ -6,8 +6,8 @@ import androidx.room.Entity;
|
||||
import androidx.room.Ignore;
|
||||
import androidx.room.Index;
|
||||
|
||||
import pl.szczodrzynski.edziennik.models.Date;
|
||||
import pl.szczodrzynski.edziennik.models.Time;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||
|
||||
@Entity(tableName = "attendances",
|
||||
primaryKeys = {"profileId", "attendanceId", "attendanceLessonDate", "attendanceStartTime"},
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.attendance;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.sqlite.db.SimpleSQLiteQuery;
|
||||
@ -8,12 +8,11 @@ import androidx.room.Insert;
|
||||
import androidx.room.OnConflictStrategy;
|
||||
import androidx.room.Query;
|
||||
import androidx.room.RawQuery;
|
||||
import pl.szczodrzynski.edziennik.models.Date;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_PRESENT;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_ATTENDANCE;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_ATTENDANCE;
|
||||
|
||||
@Dao
|
||||
public abstract class AttendanceDao {
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.attendance;
|
||||
|
||||
public class AttendanceFull extends Attendance {
|
||||
public String teacherFullName = "";
|
@ -1,7 +1,6 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.debuglog;
|
||||
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.Index;
|
||||
import androidx.room.PrimaryKey;
|
||||
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.d;
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.debuglog;
|
||||
|
||||
import androidx.room.Dao;
|
||||
import androidx.room.Insert;
|
@ -1,11 +1,11 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.events;
|
||||
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.Ignore;
|
||||
import androidx.room.Index;
|
||||
import pl.szczodrzynski.edziennik.models.Date;
|
||||
import pl.szczodrzynski.edziennik.models.Time;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||
|
||||
@Entity(tableName = "events",
|
||||
primaryKeys = {"profileId", "eventId"},
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.events;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.sqlite.db.SimpleSQLiteQuery;
|
||||
@ -14,12 +14,12 @@ import android.util.Log;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import pl.szczodrzynski.edziennik.models.Date;
|
||||
import pl.szczodrzynski.edziennik.models.Time;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_EVENT;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_HOMEWORK;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_LESSON_CHANGE;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_EVENT;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_HOMEWORK;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_LESSON_CHANGE;
|
||||
|
||||
@Dao
|
||||
public abstract class EventDao {
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.events;
|
||||
|
||||
public class EventFull extends Event {
|
||||
public String typeName = "";
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.events;
|
||||
|
||||
import android.graphics.Color;
|
||||
|
||||
@ -28,4 +28,4 @@ public class EventType {
|
||||
public EventType(int profileId, int id, String name, String color) {
|
||||
this(profileId, id, name, Color.parseColor(color));
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.events;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.feedback;
|
||||
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.Ignore;
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.feedback;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.feedback;
|
||||
|
||||
public class FeedbackMessageWithCount extends FeedbackMessage {
|
||||
public int messageCount = 0;
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.grades;
|
||||
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.grades;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.grades;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.grades;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.sqlite.db.SimpleSQLiteQuery;
|
||||
@ -14,7 +14,7 @@ import android.util.SparseIntArray;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_GRADE;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_GRADE;
|
||||
|
||||
@Dao
|
||||
public abstract class GradeDao {
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.grades;
|
||||
|
||||
public class GradeFull extends Grade {
|
||||
//public String category = "";
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.lessons;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -8,8 +8,8 @@ import androidx.room.Ignore;
|
||||
import androidx.room.Index;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import pl.szczodrzynski.edziennik.models.Time;
|
||||
import pl.szczodrzynski.edziennik.models.Week;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Week;
|
||||
|
||||
@Entity(tableName = "lessons",
|
||||
primaryKeys = {"profileId", "lessonWeekDay", "lessonStartTime", "lessonEndTime"},
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.lessons;
|
||||
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
@ -7,8 +7,8 @@ import androidx.annotation.NonNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import pl.szczodrzynski.edziennik.models.Date;
|
||||
import pl.szczodrzynski.edziennik.models.Time;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||
|
||||
@Entity(tableName = "lessonChanges",
|
||||
primaryKeys = {"profileId", "lessonChangeDate", "lessonChangeStartTime", "lessonChangeEndTime"},
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.lessons;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.sqlite.db.SimpleSQLiteQuery;
|
||||
@ -11,10 +11,10 @@ import androidx.room.RawQuery;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import pl.szczodrzynski.edziennik.models.Date;
|
||||
import pl.szczodrzynski.edziennik.models.db.LessonChangeCounter;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||
import pl.szczodrzynski.edziennik.ui.modules.agenda.lessonchange.LessonChangeCounter;
|
||||
|
||||
import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_LESSON_CHANGE;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_LESSON_CHANGE;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.d;
|
||||
|
||||
@Dao
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.lessons;
|
||||
|
||||
public class LessonChangeFull extends LessonChange {
|
||||
/*public String changeTeacherFullName = "";
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.lessons;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.sqlite.db.SimpleSQLiteQuery;
|
||||
@ -9,12 +9,11 @@ import androidx.room.OnConflictStrategy;
|
||||
import androidx.room.Query;
|
||||
import androidx.room.RawQuery;
|
||||
import androidx.annotation.NonNull;
|
||||
import android.util.Log;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import pl.szczodrzynski.edziennik.models.Date;
|
||||
import pl.szczodrzynski.edziennik.models.Time;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||
|
||||
@Dao
|
||||
public abstract class LessonDao {
|
@ -1,15 +1,15 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.lessons;
|
||||
|
||||
import androidx.room.ColumnInfo;
|
||||
import android.content.Context;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import pl.szczodrzynski.edziennik.R;
|
||||
import pl.szczodrzynski.edziennik.models.Date;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||
|
||||
import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_ADDED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CANCELLED;
|
||||
import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CHANGE;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_ADDED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CANCELLED;
|
||||
import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CHANGE;
|
||||
import static pl.szczodrzynski.edziennik.utils.Utils.bs;
|
||||
|
||||
public class LessonFull extends Lesson {
|
@ -1,16 +1,17 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.login;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.room.Ignore;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull;
|
||||
|
||||
@Entity(tableName = "loginStores",
|
||||
primaryKeys = {"loginStoreId"})
|
||||
public class LoginStore {
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.login;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.room.Dao;
|
||||
@ -8,6 +8,8 @@ import androidx.room.Query;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull;
|
||||
|
||||
@Dao
|
||||
public abstract class LoginStoreDao {
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
@ -1,10 +1,10 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.luckynumber;
|
||||
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import pl.szczodrzynski.edziennik.models.Date;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||
|
||||
@Entity(tableName = "luckyNumbers",
|
||||
primaryKeys = {"profileId", "luckyNumberDate"})
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.luckynumber;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.room.Dao;
|
||||
@ -8,7 +8,7 @@ import androidx.room.Query;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import pl.szczodrzynski.edziennik.models.Date;
|
||||
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||
|
||||
@Dao
|
||||
public interface LuckyNumberDao {
|
@ -1,4 +1,4 @@
|
||||
package pl.szczodrzynski.edziennik.datamodels;
|
||||
package pl.szczodrzynski.edziennik.data.db.modules.messages;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user