mirror of
https://github.com/szkolny-eu/szkolny-android.git
synced 2025-02-21 14:04:45 +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
|
local.properties
|
||||||
|
|
||||||
# Proguard folder generated by Eclipse
|
# Proguard folder generated by Eclipse
|
||||||
proguard/
|
#proguard/
|
||||||
|
|
||||||
# Log Files
|
# Log Files
|
||||||
*.log
|
*.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="myDefaultNotNull" value="androidx.annotation.RecentlyNonNull" />
|
||||||
<option name="myNullables">
|
<option name="myNullables">
|
||||||
<value>
|
<value>
|
||||||
<list size="10">
|
<list size="12">
|
||||||
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
|
<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="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
|
||||||
<item index="2" class="java.lang.String" itemvalue="javax.annotation.CheckForNull" />
|
<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="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="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="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>
|
</list>
|
||||||
</value>
|
</value>
|
||||||
</option>
|
</option>
|
||||||
<option name="myNotNulls">
|
<option name="myNotNulls">
|
||||||
<value>
|
<value>
|
||||||
<list size="9">
|
<list size="11">
|
||||||
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
|
<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="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
|
||||||
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.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="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="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="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>
|
</list>
|
||||||
</value>
|
</value>
|
||||||
</option>
|
</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>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
android:name=".messages.MessagesComposeActivity"
|
android:name="pl.szczodrzynski.edziennik.ui.modules.messages.MessagesComposeActivity"
|
||||||
android:configChanges="orientation|screenSize"
|
android:configChanges="orientation|screenSize"
|
||||||
android:label="@string/messages_compose_title"
|
android:label="@string/messages_compose_title"
|
||||||
android:theme="@style/AppTheme.Black" />
|
android:theme="@style/AppTheme.Black" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".activities.FeedbackActivity"
|
android:name=".ui.modules.feedback.FeedbackActivity"
|
||||||
android:configChanges="orientation|screenSize|keyboardHidden"
|
android:configChanges="orientation|screenSize|keyboardHidden"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:theme="@style/AppTheme" />
|
android:theme="@style/AppTheme" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".login.LoginActivity"
|
android:name="pl.szczodrzynski.edziennik.ui.modules.login.LoginActivity"
|
||||||
android:configChanges="orientation|screenSize"
|
android:configChanges="orientation|screenSize"
|
||||||
android:launchMode="singleTop"
|
android:launchMode="singleTop"
|
||||||
android:theme="@style/AppTheme.Light" />
|
android:theme="@style/AppTheme.Light" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".intro.ChangelogIntroActivity"
|
android:name=".ui.modules.intro.ChangelogIntroActivity"
|
||||||
android:configChanges="orientation|keyboardHidden"
|
android:configChanges="orientation|keyboardHidden"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:theme="@style/Theme.Intro" />
|
android:theme="@style/Theme.Intro" />
|
||||||
@ -57,7 +57,7 @@
|
|||||||
|_| |_|_| \___|_.__/ \__,_|___/\___/
|
|_| |_|_| \___|_.__/ \__,_|___/\___/
|
||||||
-->
|
-->
|
||||||
<activity
|
<activity
|
||||||
android:name=".activities.CrashActivity"
|
android:name=".ui.modules.base.CrashActivity"
|
||||||
android:configChanges="orientation|screenSize|keyboardHidden"
|
android:configChanges="orientation|screenSize|keyboardHidden"
|
||||||
android:process=":error_activity"
|
android:process=":error_activity"
|
||||||
android:theme="@style/DeadTheme" />
|
android:theme="@style/DeadTheme" />
|
||||||
@ -72,7 +72,7 @@
|
|||||||
|___/
|
|___/
|
||||||
-->
|
-->
|
||||||
<activity
|
<activity
|
||||||
android:name=".activities.CrashGtfoActivity"
|
android:name=".ui.modules.base.CrashGtfoActivity"
|
||||||
android:configChanges="orientation|screenSize|keyboardHidden"
|
android:configChanges="orientation|screenSize|keyboardHidden"
|
||||||
android:theme="@style/DeadTheme" />
|
android:theme="@style/DeadTheme" />
|
||||||
<activity
|
<activity
|
||||||
@ -103,7 +103,7 @@
|
|||||||
android:theme="@style/AppTheme.NoDisplay" />
|
android:theme="@style/AppTheme.NoDisplay" />
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".activities.SettingsLicenseActivity"
|
android:name=".ui.modules.settings.SettingsLicenseActivity"
|
||||||
android:configChanges="orientation|keyboardHidden"
|
android:configChanges="orientation|keyboardHidden"
|
||||||
android:theme="@style/AppTheme" />
|
android:theme="@style/AppTheme" />
|
||||||
|
|
||||||
@ -113,14 +113,14 @@
|
|||||||
android:theme="@style/Base.Theme.AppCompat" />
|
android:theme="@style/Base.Theme.AppCompat" />
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".activities.WebPushConfigActivity"
|
android:name=".ui.modules.webpush.WebPushConfigActivity"
|
||||||
android:configChanges="orientation|keyboardHidden"
|
android:configChanges="orientation|keyboardHidden"
|
||||||
android:theme="@style/AppTheme.Dark" />
|
android:theme="@style/AppTheme.Dark" />
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".activities.CounterActivity"
|
android:name=".ui.modules.home.CounterActivity"
|
||||||
android:theme="@style/AppTheme.Black" />
|
android:theme="@style/AppTheme.Black" />
|
||||||
<activity android:name=".activities.QrScannerActivity" />
|
<activity android:name=".ui.modules.webpush.QrScannerActivity" />
|
||||||
|
|
||||||
<provider
|
<provider
|
||||||
android:name="androidx.core.content.FileProvider"
|
android:name="androidx.core.content.FileProvider"
|
||||||
@ -240,4 +240,4 @@
|
|||||||
|
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
@ -31,6 +31,38 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<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>
|
<h3>Wersja 3.0, 2019-09-13</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>Nowy wygląd i sposób nawigacji</b> w całej aplikacji.</li>
|
<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.ConnectionSpec;
|
||||||
import okhttp3.OkHttpClient;
|
import okhttp3.OkHttpClient;
|
||||||
import okhttp3.TlsVersion;
|
import okhttp3.TlsVersion;
|
||||||
import pl.szczodrzynski.edziennik.activities.CrashActivity;
|
import pl.szczodrzynski.edziennik.ui.modules.base.CrashActivity;
|
||||||
import pl.szczodrzynski.edziennik.api.Edziennik;
|
import pl.szczodrzynski.edziennik.data.api.Edziennik;
|
||||||
import pl.szczodrzynski.edziennik.api.Iuczniowie;
|
import pl.szczodrzynski.edziennik.data.api.Iuczniowie;
|
||||||
import pl.szczodrzynski.edziennik.api.Librus;
|
import pl.szczodrzynski.edziennik.data.api.Librus;
|
||||||
import pl.szczodrzynski.edziennik.api.Mobidziennik;
|
import pl.szczodrzynski.edziennik.data.api.Mobidziennik;
|
||||||
import pl.szczodrzynski.edziennik.api.Vulcan;
|
import pl.szczodrzynski.edziennik.data.api.Vulcan;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.AppDb;
|
import pl.szczodrzynski.edziennik.data.db.AppDb;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.DebugLog;
|
import pl.szczodrzynski.edziennik.data.db.modules.debuglog.DebugLog;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore;
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Profile;
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull;
|
||||||
import pl.szczodrzynski.edziennik.models.AppConfig;
|
import pl.szczodrzynski.edziennik.utils.models.AppConfig;
|
||||||
import pl.szczodrzynski.edziennik.network.NetworkUtils;
|
import pl.szczodrzynski.edziennik.network.NetworkUtils;
|
||||||
import pl.szczodrzynski.edziennik.network.TLSSocketFactory;
|
import pl.szczodrzynski.edziennik.network.TLSSocketFactory;
|
||||||
import pl.szczodrzynski.edziennik.receivers.JobsCreator;
|
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.Themes;
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils;
|
import pl.szczodrzynski.edziennik.utils.Utils;
|
||||||
|
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_MOBIDZIENNIK;
|
import static pl.szczodrzynski.edziennik.data.db.modules.login.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_VULCAN;
|
||||||
|
|
||||||
public class App extends androidx.multidex.MultiDexApplication {
|
public class App extends androidx.multidex.MultiDexApplication {
|
||||||
private static final String TAG = "App";
|
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(Icon.createWithResource(this, R.mipmap.ic_shortcut_homework))
|
||||||
//.setIcon(getDesktopIconFromIconics(SzkolnyFont.Icon.szf_file_document_edit))
|
//.setIcon(getDesktopIconFromIconics(SzkolnyFont.Icon.szf_file_document_edit))
|
||||||
.setIntent(new Intent(Intent.ACTION_MAIN, null, this, MainActivity.class)
|
.setIntent(new Intent(Intent.ACTION_MAIN, null, this, MainActivity.class)
|
||||||
.putExtra("fragmentId", MainActivity.DRAWER_ITEM_HOMEWORKS))
|
.putExtra("fragmentId", MainActivity.DRAWER_ITEM_HOMEWORK))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
ShortcutInfo shortcutMessages = new ShortcutInfo.Builder(mContext, "item_messages")
|
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.JsonElement
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import im.wangchao.mhttp.Response
|
import im.wangchao.mhttp.Response
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Teacher
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||||
|
import pl.szczodrzynski.navlib.R
|
||||||
import pl.szczodrzynski.navlib.crc16
|
import pl.szczodrzynski.navlib.crc16
|
||||||
import pl.szczodrzynski.navlib.getColorFromRes
|
import pl.szczodrzynski.navlib.getColorFromRes
|
||||||
import java.text.SimpleDateFormat
|
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.iconics.typeface.library.szkolny.font.SzkolnyFont
|
||||||
import com.mikepenz.materialdrawer.model.ProfileSettingDrawerItem
|
import com.mikepenz.materialdrawer.model.ProfileSettingDrawerItem
|
||||||
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem
|
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.edziennik.utils.Themes
|
||||||
import pl.szczodrzynski.navlib.NavView
|
import pl.szczodrzynski.navlib.NavView
|
||||||
import pl.szczodrzynski.navlib.SystemBarsUtil
|
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.drawer.items.withAppTitle
|
||||||
import pl.szczodrzynski.navlib.getColorFromAttr
|
import pl.szczodrzynski.navlib.getColorFromAttr
|
||||||
import androidx.appcompat.widget.PopupMenu
|
import androidx.appcompat.widget.PopupMenu
|
||||||
|
import androidx.core.graphics.ColorUtils
|
||||||
import androidx.navigation.NavOptions
|
import androidx.navigation.NavOptions
|
||||||
import com.danimahardhika.cafebar.CafeBar
|
import com.danimahardhika.cafebar.CafeBar
|
||||||
import com.mikepenz.iconics.IconicsColor
|
import com.mikepenz.iconics.IconicsColor
|
||||||
@ -40,21 +41,35 @@ import com.mikepenz.materialdrawer.model.ProfileDrawerItem
|
|||||||
import com.mikepenz.materialdrawer.model.interfaces.IProfile
|
import com.mikepenz.materialdrawer.model.interfaces.IProfile
|
||||||
import pl.droidsonroids.gif.GifDrawable
|
import pl.droidsonroids.gif.GifDrawable
|
||||||
import pl.szczodrzynski.edziennik.App.APP_URL
|
import pl.szczodrzynski.edziennik.App.APP_URL
|
||||||
import pl.szczodrzynski.edziennik.api.AppError
|
import pl.szczodrzynski.edziennik.data.api.AppError
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.*
|
import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.*
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback
|
import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback
|
||||||
import pl.szczodrzynski.edziennik.databinding.ActivitySzkolnyBinding
|
import pl.szczodrzynski.edziennik.databinding.ActivitySzkolnyBinding
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull
|
||||||
import pl.szczodrzynski.edziennik.dialogs.ChangelogDialog
|
import pl.szczodrzynski.edziennik.ui.dialogs.changelog.ChangelogDialog
|
||||||
import pl.szczodrzynski.edziennik.fragments.*
|
import pl.szczodrzynski.edziennik.ui.modules.homework.HomeworkFragment
|
||||||
import pl.szczodrzynski.edziennik.login.LoginActivity
|
import pl.szczodrzynski.edziennik.ui.modules.login.LoginActivity
|
||||||
import pl.szczodrzynski.edziennik.messages.MessagesDetailsFragment
|
import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesDetailsFragment
|
||||||
import pl.szczodrzynski.edziennik.messages.MessagesFragment
|
import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesFragment
|
||||||
import pl.szczodrzynski.edziennik.models.NavTarget
|
import pl.szczodrzynski.edziennik.utils.models.NavTarget
|
||||||
import pl.szczodrzynski.edziennik.network.ServerRequest
|
import pl.szczodrzynski.edziennik.network.ServerRequest
|
||||||
import pl.szczodrzynski.edziennik.sync.SyncJob
|
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.SwipeRefreshLayoutNoTouch
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils
|
import pl.szczodrzynski.edziennik.utils.Utils
|
||||||
import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem
|
import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem
|
||||||
@ -82,9 +97,9 @@ class MainActivity : AppCompatActivity() {
|
|||||||
const val DRAWER_ITEM_AGENDA = 12
|
const val DRAWER_ITEM_AGENDA = 12
|
||||||
const val DRAWER_ITEM_GRADES = 13
|
const val DRAWER_ITEM_GRADES = 13
|
||||||
const val DRAWER_ITEM_MESSAGES = 17
|
const val DRAWER_ITEM_MESSAGES = 17
|
||||||
const val DRAWER_ITEM_HOMEWORKS = 14
|
const val DRAWER_ITEM_HOMEWORK = 14
|
||||||
const val DRAWER_ITEM_NOTICES = 15
|
const val DRAWER_ITEM_BEHAVIOUR = 15
|
||||||
const val DRAWER_ITEM_ATTENDANCES = 16
|
const val DRAWER_ITEM_ATTENDANCE = 16
|
||||||
const val DRAWER_ITEM_ANNOUNCEMENTS = 18
|
const val DRAWER_ITEM_ANNOUNCEMENTS = 18
|
||||||
const val DRAWER_ITEM_NOTIFICATIONS = 20
|
const val DRAWER_ITEM_NOTIFICATIONS = 20
|
||||||
const val DRAWER_ITEM_SETTINGS = 101
|
const val DRAWER_ITEM_SETTINGS = 101
|
||||||
@ -108,17 +123,17 @@ class MainActivity : AppCompatActivity() {
|
|||||||
.isStatic(true)
|
.isStatic(true)
|
||||||
.withPopToHome(false)
|
.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)
|
.withIcon(CommunityMaterial.Icon2.cmd_timetable)
|
||||||
.withBadgeTypeId(TYPE_LESSON_CHANGE)
|
.withBadgeTypeId(TYPE_LESSON_CHANGE)
|
||||||
.isInDrawer(true)
|
.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)
|
.withIcon(CommunityMaterial.Icon.cmd_calendar)
|
||||||
.withBadgeTypeId(TYPE_EVENT)
|
.withBadgeTypeId(TYPE_EVENT)
|
||||||
.isInDrawer(true)
|
.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)
|
.withIcon(CommunityMaterial.Icon2.cmd_numeric_5_box)
|
||||||
.withBadgeTypeId(TYPE_GRADE)
|
.withBadgeTypeId(TYPE_GRADE)
|
||||||
.isInDrawer(true)
|
.isInDrawer(true)
|
||||||
@ -128,29 +143,29 @@ class MainActivity : AppCompatActivity() {
|
|||||||
.withBadgeTypeId(TYPE_MESSAGE)
|
.withBadgeTypeId(TYPE_MESSAGE)
|
||||||
.isInDrawer(true)
|
.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)
|
.withIcon(SzkolnyFont.Icon.szf_file_document_edit)
|
||||||
.withBadgeTypeId(TYPE_HOMEWORK)
|
.withBadgeTypeId(TYPE_HOMEWORK)
|
||||||
.isInDrawer(true)
|
.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)
|
.withIcon(CommunityMaterial.Icon2.cmd_message_alert)
|
||||||
.withBadgeTypeId(TYPE_NOTICE)
|
.withBadgeTypeId(TYPE_NOTICE)
|
||||||
.isInDrawer(true)
|
.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)
|
.withIcon(CommunityMaterial.Icon.cmd_calendar_remove)
|
||||||
.withBadgeTypeId(TYPE_ATTENDANCE)
|
.withBadgeTypeId(TYPE_ATTENDANCE)
|
||||||
.isInDrawer(true)
|
.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)
|
.withIcon(CommunityMaterial.Icon.cmd_bulletin_board)
|
||||||
.withBadgeTypeId(TYPE_ANNOUNCEMENT)
|
.withBadgeTypeId(TYPE_ANNOUNCEMENT)
|
||||||
.isInDrawer(true)
|
.isInDrawer(true)
|
||||||
|
|
||||||
|
|
||||||
// static drawer items
|
// 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)
|
.withIcon(CommunityMaterial.Icon.cmd_bell_ring)
|
||||||
.isInDrawer(true)
|
.isInDrawer(true)
|
||||||
.isStatic(true)
|
.isStatic(true)
|
||||||
@ -229,8 +244,8 @@ class MainActivity : AppCompatActivity() {
|
|||||||
drawer.init(this@MainActivity)
|
drawer.init(this@MainActivity)
|
||||||
|
|
||||||
SystemBarsUtil(this@MainActivity).run {
|
SystemBarsUtil(this@MainActivity).run {
|
||||||
paddingByKeyboard = b.navView
|
//paddingByKeyboard = b.navView
|
||||||
appFullscreen = true
|
appFullscreen = false
|
||||||
statusBarColor = getColorFromAttr(context, android.R.attr.colorBackground)
|
statusBarColor = getColorFromAttr(context, android.R.attr.colorBackground)
|
||||||
statusBarDarker = false
|
statusBarDarker = false
|
||||||
statusBarFallbackLight = COLOR_HALF_TRANSPARENT
|
statusBarFallbackLight = COLOR_HALF_TRANSPARENT
|
||||||
@ -239,6 +254,16 @@ class MainActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
b.navView.configSystemBarsUtil(this)
|
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()
|
commit()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -511,9 +536,9 @@ class MainActivity : AppCompatActivity() {
|
|||||||
DRAWER_ITEM_TIMETABLE -> FEATURE_TIMETABLE
|
DRAWER_ITEM_TIMETABLE -> FEATURE_TIMETABLE
|
||||||
DRAWER_ITEM_AGENDA -> FEATURE_AGENDA
|
DRAWER_ITEM_AGENDA -> FEATURE_AGENDA
|
||||||
DRAWER_ITEM_GRADES -> FEATURE_GRADES
|
DRAWER_ITEM_GRADES -> FEATURE_GRADES
|
||||||
DRAWER_ITEM_HOMEWORKS -> FEATURE_HOMEWORKS
|
DRAWER_ITEM_HOMEWORK -> FEATURE_HOMEWORK
|
||||||
DRAWER_ITEM_NOTICES -> FEATURE_NOTICES
|
DRAWER_ITEM_BEHAVIOUR -> FEATURE_NOTICES
|
||||||
DRAWER_ITEM_ATTENDANCES -> FEATURE_ATTENDANCES
|
DRAWER_ITEM_ATTENDANCE -> FEATURE_ATTENDANCE
|
||||||
DRAWER_ITEM_MESSAGES -> when (MessagesFragment.pageSelection) {
|
DRAWER_ITEM_MESSAGES -> when (MessagesFragment.pageSelection) {
|
||||||
1 -> FEATURE_MESSAGES_OUTBOX
|
1 -> FEATURE_MESSAGES_OUTBOX
|
||||||
else -> FEATURE_MESSAGES_INBOX
|
else -> FEATURE_MESSAGES_INBOX
|
||||||
@ -527,9 +552,9 @@ class MainActivity : AppCompatActivity() {
|
|||||||
DRAWER_ITEM_TIMETABLE -> R.string.sync_feature_timetable
|
DRAWER_ITEM_TIMETABLE -> R.string.sync_feature_timetable
|
||||||
DRAWER_ITEM_AGENDA -> R.string.sync_feature_agenda
|
DRAWER_ITEM_AGENDA -> R.string.sync_feature_agenda
|
||||||
DRAWER_ITEM_GRADES -> R.string.sync_feature_grades
|
DRAWER_ITEM_GRADES -> R.string.sync_feature_grades
|
||||||
DRAWER_ITEM_HOMEWORKS -> R.string.sync_feature_homeworks
|
DRAWER_ITEM_HOMEWORK -> R.string.sync_feature_homework
|
||||||
DRAWER_ITEM_NOTICES -> R.string.sync_feature_notices
|
DRAWER_ITEM_BEHAVIOUR -> R.string.sync_feature_notices
|
||||||
DRAWER_ITEM_ATTENDANCES -> R.string.sync_feature_attendances
|
DRAWER_ITEM_ATTENDANCE -> R.string.sync_feature_attendance
|
||||||
DRAWER_ITEM_MESSAGES -> when (MessagesFragment.pageSelection) {
|
DRAWER_ITEM_MESSAGES -> when (MessagesFragment.pageSelection) {
|
||||||
1 -> R.string.sync_feature_messages_outbox
|
1 -> R.string.sync_feature_messages_outbox
|
||||||
else -> R.string.sync_feature_messages_inbox
|
else -> R.string.sync_feature_messages_inbox
|
||||||
@ -729,6 +754,9 @@ class MainActivity : AppCompatActivity() {
|
|||||||
drawer.close()
|
drawer.close()
|
||||||
drawer.setSelection(target.id, fireOnClick = false)
|
drawer.setSelection(target.id, fireOnClick = false)
|
||||||
navView.toolbar.setTitle(target.title ?: target.name)
|
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}")
|
Log.d("NavDebug", "Navigating from ${navTarget.fragmentClass?.java?.simpleName} to ${target.fragmentClass?.java?.simpleName}")
|
||||||
|
|
||||||
@ -837,7 +865,19 @@ class MainActivity : AppCompatActivity() {
|
|||||||
fun gainAttention() {
|
fun gainAttention() {
|
||||||
b.navView.postDelayed({
|
b.navView.postDelayed({
|
||||||
navView.gainAttentionOnBottomBar()
|
navView.gainAttentionOnBottomBar()
|
||||||
|
}, 2000)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun gainAttentionFAB() {
|
||||||
|
navView.bottomBar.fabExtended = false
|
||||||
|
|
||||||
|
b.navView.postDelayed({
|
||||||
|
navView.bottomBar.fabExtended = true
|
||||||
}, 1000)
|
}, 1000)
|
||||||
|
|
||||||
|
b.navView.postDelayed({
|
||||||
|
navView.bottomBar.fabExtended = false
|
||||||
|
}, 3000)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* _____ _ _
|
/* _____ _ _
|
||||||
|
@ -16,9 +16,9 @@ import java.util.ArrayList;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull;
|
||||||
import pl.szczodrzynski.edziennik.models.Date;
|
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||||
import pl.szczodrzynski.edziennik.models.Time;
|
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||||
import pl.szczodrzynski.edziennik.receivers.BootReceiver;
|
import pl.szczodrzynski.edziennik.receivers.BootReceiver;
|
||||||
import pl.szczodrzynski.edziennik.sync.SyncJob;
|
import pl.szczodrzynski.edziennik.sync.SyncJob;
|
||||||
import pl.szczodrzynski.edziennik.sync.SyncService;
|
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);
|
app.appConfig.notifications.add(notification);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -235,8 +235,8 @@ public class Notifier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int unreadCount = 0;
|
int unreadCount = 0;
|
||||||
List<pl.szczodrzynski.edziennik.models.Notification> notificationList = new ArrayList<>();
|
List<pl.szczodrzynski.edziennik.utils.models.Notification> notificationList = new ArrayList<>();
|
||||||
for (pl.szczodrzynski.edziennik.models.Notification notification: app.appConfig.notifications) {
|
for (pl.szczodrzynski.edziennik.utils.models.Notification notification: app.appConfig.notifications) {
|
||||||
if (!notification.notified) {
|
if (!notification.notified) {
|
||||||
notification.seen = false;
|
notification.seen = false;
|
||||||
notification.notified = true;
|
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);
|
Intent intent = new Intent(app, MainActivity.class);
|
||||||
notification.fillIntent(intent);
|
notification.fillIntent(intent);
|
||||||
PendingIntent pendingIntent = PendingIntent.getActivity(app, notification.id, intent, 0);
|
PendingIntent pendingIntent = PendingIntent.getActivity(app, notification.id, intent, 0);
|
||||||
@ -258,9 +258,9 @@ public class Notifier {
|
|||||||
// title, text, type, date
|
// title, text, type, date
|
||||||
.setContentTitle(notification.title)
|
.setContentTitle(notification.title)
|
||||||
.setContentText(notification.text)
|
.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)
|
.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
|
// icon, color, lights, priority
|
||||||
.setSmallIcon(R.drawable.ic_notification)
|
.setSmallIcon(R.drawable.ic_notification)
|
||||||
.setColor(notificationColor)
|
.setColor(notificationColor)
|
||||||
@ -349,7 +349,7 @@ public class Notifier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void dump() {
|
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);
|
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.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.datamodels.EventFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.events.EventFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LessonChange;
|
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LessonFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Profile;
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile;
|
||||||
import pl.szczodrzynski.edziennik.fragments.HomeFragment;
|
import pl.szczodrzynski.edziennik.ui.modules.home.HomeFragment;
|
||||||
import pl.szczodrzynski.edziennik.models.Date;
|
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||||
import pl.szczodrzynski.edziennik.models.ItemWidgetTimetableModel;
|
import pl.szczodrzynski.edziennik.utils.models.ItemWidgetTimetableModel;
|
||||||
import pl.szczodrzynski.edziennik.models.Time;
|
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||||
import pl.szczodrzynski.edziennik.models.Week;
|
import pl.szczodrzynski.edziennik.utils.models.Week;
|
||||||
import pl.szczodrzynski.edziennik.widgets.WidgetConfig;
|
import pl.szczodrzynski.edziennik.widgets.WidgetConfig;
|
||||||
import pl.szczodrzynski.edziennik.sync.SyncJob;
|
import pl.szczodrzynski.edziennik.sync.SyncJob;
|
||||||
import pl.szczodrzynski.edziennik.widgets.timetable.LessonDetailsActivity;
|
import pl.szczodrzynski.edziennik.widgets.timetable.LessonDetailsActivity;
|
||||||
import pl.szczodrzynski.edziennik.widgets.timetable.WidgetTimetableService;
|
import pl.szczodrzynski.edziennik.widgets.timetable.WidgetTimetableService;
|
||||||
|
|
||||||
import static pl.szczodrzynski.edziennik.ExtensionsKt.filterOutArchived;
|
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;
|
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.content.Intent
|
||||||
import android.os.IBinder
|
import android.os.IBinder
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.core.app.NotificationCompat
|
|
||||||
import org.greenrobot.eventbus.EventBus
|
import org.greenrobot.eventbus.EventBus
|
||||||
import org.greenrobot.eventbus.Subscribe
|
import org.greenrobot.eventbus.Subscribe
|
||||||
import org.greenrobot.eventbus.ThreadMode
|
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.librus.Librus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiTask
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiTask
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
|
|
||||||
class ApiService : Service() {
|
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_AGENDA
|
||||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_ANNOUNCEMENTS
|
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_GRADES
|
||||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_HOME
|
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_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.MainActivity.Companion.DRAWER_ITEM_TIMETABLE
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Message.TYPE_RECEIVED
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_RECEIVED
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Message.TYPE_SENT
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_SENT
|
||||||
import pl.szczodrzynski.edziennik.messages.MessagesFragment
|
import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesFragment
|
||||||
import pl.szczodrzynski.edziennik.messages.MessagesListFragment
|
|
||||||
|
|
||||||
const val FEATURE_ALL = 0
|
const val FEATURE_ALL = 0
|
||||||
const val FEATURE_TIMETABLE = 1
|
const val FEATURE_TIMETABLE = 1
|
||||||
@ -77,9 +76,9 @@ object Features {
|
|||||||
TYPE_SENT -> listOf(FEATURE_MESSAGES_OUTBOX)
|
TYPE_SENT -> listOf(FEATURE_MESSAGES_OUTBOX)
|
||||||
else -> listOf(FEATURE_MESSAGES_INBOX, FEATURE_MESSAGES_OUTBOX)
|
else -> listOf(FEATURE_MESSAGES_INBOX, FEATURE_MESSAGES_OUTBOX)
|
||||||
}
|
}
|
||||||
DRAWER_ITEM_HOMEWORKS -> listOf(FEATURE_HOMEWORK)
|
DRAWER_ITEM_HOMEWORK -> listOf(FEATURE_HOMEWORK)
|
||||||
DRAWER_ITEM_NOTICES -> listOf(FEATURE_NOTICES)
|
DRAWER_ITEM_BEHAVIOUR -> listOf(FEATURE_NOTICES)
|
||||||
DRAWER_ITEM_ATTENDANCES -> listOf(FEATURE_ATTENDANCES)
|
DRAWER_ITEM_ATTENDANCE -> listOf(FEATURE_ATTENDANCES)
|
||||||
DRAWER_ITEM_ANNOUNCEMENTS -> listOf(FEATURE_ANNOUNCEMENTS)
|
DRAWER_ITEM_ANNOUNCEMENTS -> listOf(FEATURE_ANNOUNCEMENTS)
|
||||||
else -> getAllFeatures()
|
else -> getAllFeatures()
|
||||||
} + getAllNecessary()
|
} + getAllNecessary()
|
||||||
|
@ -6,16 +6,17 @@ package pl.szczodrzynski.edziennik.api.v2.librus
|
|||||||
|
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import pl.szczodrzynski.edziennik.App
|
import pl.szczodrzynski.edziennik.App
|
||||||
import pl.szczodrzynski.edziennik.R
|
import pl.szczodrzynski.edziennik.api.v2.CODE_INTERNAL_LIBRUS_ACCOUNT_410
|
||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
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.EdziennikCallback
|
||||||
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikInterface
|
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikInterface
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus
|
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.ApiError
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.Endpoint
|
import pl.szczodrzynski.edziennik.api.v2.models.Endpoint
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils.d
|
import pl.szczodrzynski.edziennik.utils.Utils.d
|
||||||
|
|
||||||
class Librus(val app: App, val profile: Profile?, val loginStore: LoginStore, val callback: EdziennikCallback) : EdziennikInterface {
|
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
|
package pl.szczodrzynski.edziennik.api.v2.librus
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.R
|
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.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusApiMe
|
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
|
import pl.szczodrzynski.edziennik.utils.Utils
|
||||||
|
|
||||||
class LibrusEndpoints(val data: DataLibrus, val onSuccess: () -> Unit) {
|
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
|
package pl.szczodrzynski.edziennik.api.v2.librus
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import pl.szczodrzynski.edziennik.App
|
import pl.szczodrzynski.edziennik.App
|
||||||
import pl.szczodrzynski.edziennik.api.AppError
|
import pl.szczodrzynski.edziennik.api.v2.ApiService
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.ProgressCallback
|
import pl.szczodrzynski.edziennik.api.v2.LOGIN_MODE_LIBRUS_EMAIL
|
||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
import pl.szczodrzynski.edziennik.api.v2.LOGIN_TYPE_LIBRUS
|
||||||
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikCallback
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||||
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
|
|
||||||
|
|
||||||
class LibrusTest(val app: App) {
|
class LibrusTest(val app: App) {
|
||||||
companion object {
|
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.LOGIN_METHOD_LIBRUS_SYNERGIA
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.Data
|
import pl.szczodrzynski.edziennik.api.v2.models.Data
|
||||||
import pl.szczodrzynski.edziennik.currentTimeUnix
|
import pl.szczodrzynski.edziennik.currentTimeUnix
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||||
import pl.szczodrzynski.edziennik.isNotNullNorEmpty
|
import pl.szczodrzynski.edziennik.isNotNullNorEmpty
|
||||||
|
|
||||||
class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app, profile, loginStore) {
|
class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app, profile, loginStore) {
|
||||||
|
@ -4,22 +4,13 @@
|
|||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data
|
package pl.szczodrzynski.edziennik.api.v2.librus.data
|
||||||
|
|
||||||
import com.google.gson.JsonNull
|
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import im.wangchao.mhttp.Request
|
import im.wangchao.mhttp.Request
|
||||||
import im.wangchao.mhttp.Response
|
import im.wangchao.mhttp.Response
|
||||||
import im.wangchao.mhttp.callback.JsonCallbackHandler
|
import im.wangchao.mhttp.callback.JsonCallbackHandler
|
||||||
import 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.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.login.LoginLibrusSynergia
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.getString
|
import pl.szczodrzynski.edziennik.getString
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils.d
|
|
||||||
import java.lang.Exception
|
|
||||||
import java.net.HttpURLConnection
|
|
||||||
import java.net.HttpURLConnection.*
|
import java.net.HttpURLConnection.*
|
||||||
|
|
||||||
open class LibrusApi(open val data: DataLibrus) {
|
open class LibrusApi(open val data: DataLibrus) {
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data
|
package pl.szczodrzynski.edziennik.api.v2.librus.data
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.App
|
import pl.szczodrzynski.edziennik.App
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.ProgressCallback
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.Data
|
import pl.szczodrzynski.edziennik.api.v2.models.Data
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
import pl.szczodrzynski.edziennik.data.api.interfaces.ProgressCallback
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||||
|
|
||||||
|
|
||||||
class LibrusApiGrades(val app: App,
|
class LibrusApiGrades(val app: App,
|
||||||
val profile: Profile,
|
val profile: Profile,
|
||||||
|
@ -5,10 +5,6 @@
|
|||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data
|
package pl.szczodrzynski.edziennik.api.v2.librus.data
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.*
|
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,
|
class LibrusApiMe(override val data: DataLibrus,
|
||||||
val onSuccess: () -> Unit) : LibrusApi(data) {
|
val onSuccess: () -> Unit) : LibrusApi(data) {
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data
|
package pl.szczodrzynski.edziennik.api.v2.librus.data
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.App
|
import pl.szczodrzynski.edziennik.App
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.ProgressCallback
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.Data
|
import pl.szczodrzynski.edziennik.api.v2.models.Data
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
import pl.szczodrzynski.edziennik.data.api.interfaces.ProgressCallback
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||||
|
|
||||||
class LibrusSynergiaGrades(val app: App,
|
class LibrusSynergiaGrades(val app: App,
|
||||||
val profile: Profile,
|
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.JsonCallbackHandler
|
||||||
import im.wangchao.mhttp.callback.TextCallbackHandler
|
import im.wangchao.mhttp.callback.TextCallbackHandler
|
||||||
import pl.szczodrzynski.edziennik.*
|
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.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils.c
|
|
||||||
import java.net.HttpURLConnection.HTTP_UNAUTHORIZED
|
import java.net.HttpURLConnection.HTTP_UNAUTHORIZED
|
||||||
import java.util.ArrayList
|
import java.util.ArrayList
|
||||||
import java.util.regex.Pattern
|
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.JsonCallbackHandler
|
||||||
import im.wangchao.mhttp.callback.TextCallbackHandler
|
import im.wangchao.mhttp.callback.TextCallbackHandler
|
||||||
import okhttp3.Cookie
|
import okhttp3.Cookie
|
||||||
import okhttp3.HttpUrl
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.*
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.currentTimeUnix
|
|
||||||
import pl.szczodrzynski.edziennik.getString
|
import pl.szczodrzynski.edziennik.getString
|
||||||
import pl.szczodrzynski.edziennik.getUnixDate
|
import pl.szczodrzynski.edziennik.getUnixDate
|
||||||
import pl.szczodrzynski.edziennik.isNotNullNorEmpty
|
|
||||||
import java.lang.Exception
|
|
||||||
import java.net.HttpURLConnection
|
import java.net.HttpURLConnection
|
||||||
|
|
||||||
class LoginLibrusSynergia(val data: DataLibrus, val onSuccess: () -> Unit) {
|
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.Response
|
||||||
import im.wangchao.mhttp.callback.JsonCallbackHandler
|
import im.wangchao.mhttp.callback.JsonCallbackHandler
|
||||||
import pl.szczodrzynski.edziennik.*
|
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.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.librus.data.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
|
@ -6,12 +6,26 @@ import androidx.core.util.isNotEmpty
|
|||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import im.wangchao.mhttp.Response
|
import im.wangchao.mhttp.Response
|
||||||
import pl.szczodrzynski.edziennik.App
|
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.api.v2.interfaces.EndpointCallback
|
||||||
import pl.szczodrzynski.edziennik.datamodels.*
|
import pl.szczodrzynski.edziennik.data.api.AppError.*
|
||||||
import pl.szczodrzynski.edziennik.models.Date
|
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.io.InterruptedIOException
|
||||||
import java.net.SocketTimeoutException
|
import java.net.SocketTimeoutException
|
||||||
import java.net.UnknownHostException
|
import java.net.UnknownHostException
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
package pl.szczodrzynski.edziennik.api.v2.models
|
package pl.szczodrzynski.edziennik.api.v2.models
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A Endpoint descriptor class.
|
* A Endpoint descriptor class.
|
||||||
*
|
*
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
package pl.szczodrzynski.edziennik.api.v2.models
|
package pl.szczodrzynski.edziennik.api.v2.models
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_NOT_NEEDED
|
import pl.szczodrzynski.edziennik.api.v2.LOGIN_METHOD_NOT_NEEDED
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Profile
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A Login Method descriptor class.
|
* 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.content.Context;
|
||||||
import android.os.AsyncTask;
|
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.app.Activity;
|
||||||
import android.appwidget.AppWidgetManager;
|
import android.appwidget.AppWidgetManager;
|
||||||
@ -43,27 +43,27 @@ import pl.szczodrzynski.edziennik.BuildConfig;
|
|||||||
import pl.szczodrzynski.edziennik.R;
|
import pl.szczodrzynski.edziennik.R;
|
||||||
import pl.szczodrzynski.edziennik.MainActivity;
|
import pl.szczodrzynski.edziennik.MainActivity;
|
||||||
import pl.szczodrzynski.edziennik.WidgetTimetable;
|
import pl.szczodrzynski.edziennik.WidgetTimetable;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.AnnouncementFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.announcements.AnnouncementFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Attendance;
|
import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.AttendanceFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.attendance.AttendanceFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Event;
|
import pl.szczodrzynski.edziennik.data.db.modules.events.Event;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.EventFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.events.EventFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.EventType;
|
import pl.szczodrzynski.edziennik.data.db.modules.events.EventType;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.GradeFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LessonFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore;
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Message;
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.MessageFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Metadata;
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Notice;
|
import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.NoticeFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.notices.NoticeFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Profile;
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Team;
|
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team;
|
||||||
import pl.szczodrzynski.edziennik.models.Date;
|
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||||
import pl.szczodrzynski.edziennik.models.Notification;
|
import pl.szczodrzynski.edziennik.utils.models.Notification;
|
||||||
import pl.szczodrzynski.edziennik.network.ServerRequest;
|
import pl.szczodrzynski.edziennik.network.ServerRequest;
|
||||||
import pl.szczodrzynski.edziennik.sync.SyncJob;
|
import pl.szczodrzynski.edziennik.sync.SyncJob;
|
||||||
import pl.szczodrzynski.edziennik.utils.Themes;
|
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 com.mikepenz.iconics.utils.IconicsConvertersKt.sizeDp;
|
||||||
import static pl.szczodrzynski.edziennik.App.APP_URL;
|
import static pl.szczodrzynski.edziennik.App.APP_URL;
|
||||||
import static pl.szczodrzynski.edziennik.MainActivity.DRAWER_ITEM_HOME;
|
import static pl.szczodrzynski.edziennik.MainActivity.DRAWER_ITEM_HOME;
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_OK;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OK;
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_OTHER;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OTHER;
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_PROFILE_ARCHIVED;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_PROFILE_ARCHIVED;
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_PROFILE_NOT_FOUND;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_PROFILE_NOT_FOUND;
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.stringErrorCode;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.stringErrorCode;
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.stringErrorType;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.stringErrorType;
|
||||||
import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_AGENDA;
|
import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_AGENDA;
|
||||||
import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_ALL;
|
import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_ALL;
|
||||||
import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_ANNOUNCEMENTS;
|
import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_ANNOUNCEMENTS;
|
||||||
import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_ATTENDANCES;
|
import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_ATTENDANCE;
|
||||||
import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_GRADES;
|
import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_GRADES;
|
||||||
import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_HOMEWORKS;
|
import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_HOMEWORK;
|
||||||
import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_MESSAGES_INBOX;
|
import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_MESSAGES_INBOX;
|
||||||
import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_MESSAGES_OUTBOX;
|
import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_MESSAGES_OUTBOX;
|
||||||
import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_NOTICES;
|
import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_NOTICES;
|
||||||
import static pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface.FEATURE_TIMETABLE;
|
import static pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface.FEATURE_TIMETABLE;
|
||||||
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.datamodels.Grade.TYPE_SEMESTER1_FINAL;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_FINAL;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_PROPOSED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_PROPOSED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_FINAL;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_FINAL;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_PROPOSED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_PROPOSED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_FINAL;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_FINAL;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_PROPOSED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_PROPOSED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_IUCZNIOWIE;
|
import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_IUCZNIOWIE;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_LIBRUS;
|
import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_LIBRUS;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_MOBIDZIENNIK;
|
import static pl.szczodrzynski.edziennik.data.db.modules.login.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_VULCAN;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Profile.REGISTRATION_ENABLED;
|
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.sync.SyncService.PROFILE_MAX_PROGRESS;
|
||||||
import static pl.szczodrzynski.edziennik.utils.Utils.d;
|
import static pl.szczodrzynski.edziennik.utils.Utils.d;
|
||||||
import static pl.szczodrzynski.edziennik.utils.Utils.ns;
|
import static pl.szczodrzynski.edziennik.utils.Utils.ns;
|
||||||
@ -115,7 +115,7 @@ public class Edziennik {
|
|||||||
private static boolean registerEmpty;
|
private static boolean registerEmpty;
|
||||||
public static int oldLuckyNumber;
|
public static int oldLuckyNumber;
|
||||||
|
|
||||||
public static OldEdziennikInterface getApi(App app, int loginType) {
|
public static EdziennikInterface getApi(App app, int loginType) {
|
||||||
switch (loginType) {
|
switch (loginType) {
|
||||||
default:
|
default:
|
||||||
case LOGIN_TYPE_MOBIDZIENNIK:
|
case LOGIN_TYPE_MOBIDZIENNIK:
|
||||||
@ -306,7 +306,7 @@ public class Edziennik {
|
|||||||
app.notifier.add(new Notification(app.getContext(), text)
|
app.notifier.add(new Notification(app.getContext(), text)
|
||||||
.withProfileData(profile.getId(), profile.getName())
|
.withProfileData(profile.getId(), profile.getName())
|
||||||
.withType(event.type == TYPE_HOMEWORK ? Notification.TYPE_NEW_HOMEWORK : Notification.TYPE_NEW_EVENT)
|
.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("eventId", event.id)
|
||||||
.withLongExtra("eventDate", event.eventDate.getValue())
|
.withLongExtra("eventDate", event.eventDate.getValue())
|
||||||
.withAddedDate(event.addedDate)
|
.withAddedDate(event.addedDate)
|
||||||
@ -354,7 +354,7 @@ public class Edziennik {
|
|||||||
app.notifier.add(new Notification(app.getContext(), text)
|
app.notifier.add(new Notification(app.getContext(), text)
|
||||||
.withProfileData(profile.getId(), profile.getName())
|
.withProfileData(profile.getId(), profile.getName())
|
||||||
.withType(Notification.TYPE_NEW_NOTICE)
|
.withType(Notification.TYPE_NEW_NOTICE)
|
||||||
.withFragmentRedirect(MainActivity.DRAWER_ITEM_NOTICES)
|
.withFragmentRedirect(MainActivity.DRAWER_ITEM_BEHAVIOUR)
|
||||||
.withLongExtra("noticeId", notice.id)
|
.withLongExtra("noticeId", notice.id)
|
||||||
.withAddedDate(notice.addedDate)
|
.withAddedDate(notice.addedDate)
|
||||||
);
|
);
|
||||||
@ -382,7 +382,7 @@ public class Edziennik {
|
|||||||
app.notifier.add(new Notification(app.getContext(), text)
|
app.notifier.add(new Notification(app.getContext(), text)
|
||||||
.withProfileData(profile.getId(), profile.getName())
|
.withProfileData(profile.getId(), profile.getName())
|
||||||
.withType(Notification.TYPE_NEW_ATTENDANCE)
|
.withType(Notification.TYPE_NEW_ATTENDANCE)
|
||||||
.withFragmentRedirect(MainActivity.DRAWER_ITEM_ATTENDANCES)
|
.withFragmentRedirect(MainActivity.DRAWER_ITEM_ATTENDANCE)
|
||||||
.withLongExtra("attendanceId", attendance.id)
|
.withLongExtra("attendanceId", attendance.id)
|
||||||
.withAddedDate(attendance.addedDate)
|
.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))
|
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())
|
.withProfileData(profile.getId(), profile.getName())
|
||||||
.withType(event.type == TYPE_HOMEWORK ? Notification.TYPE_NEW_SHARED_HOMEWORK : Notification.TYPE_NEW_SHARED_EVENT)
|
.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())
|
.withLongExtra("eventDate", event.eventDate.getValue())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -625,7 +625,7 @@ public class Edziennik {
|
|||||||
* Used in services, login form and {@code guiSync}
|
* Used in services, login form and {@code guiSync}
|
||||||
* <p>
|
* <p>
|
||||||
* May be ran on worker thread.
|
* 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.
|
* Every callback is ran on the UI thread.
|
||||||
*
|
*
|
||||||
* @param app
|
* @param app
|
||||||
@ -676,7 +676,7 @@ public class Edziennik {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
AsyncTask.execute(() -> {
|
AsyncTask.execute(() -> {
|
||||||
ProfileFull profile = app.db.profileDao().getFullByIdNow(profileId);
|
ProfileFull profile = app.db.profileDao().getByIdNow(profileId);
|
||||||
if (profile != null) {
|
if (profile != null) {
|
||||||
|
|
||||||
if (profile.getArchived()) {
|
if (profile.getArchived()) {
|
||||||
@ -849,7 +849,7 @@ public class Edziennik {
|
|||||||
app.getString(R.string.menu_grades),
|
app.getString(R.string.menu_grades),
|
||||||
app.getString(R.string.menu_homework),
|
app.getString(R.string.menu_homework),
|
||||||
app.getString(R.string.menu_notices),
|
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_inbox_single),
|
||||||
app.getString(R.string.title_messages_sent_single),
|
app.getString(R.string.title_messages_sent_single),
|
||||||
app.getString(R.string.menu_announcements)
|
app.getString(R.string.menu_announcements)
|
||||||
@ -858,9 +858,9 @@ public class Edziennik {
|
|||||||
FEATURE_TIMETABLE,
|
FEATURE_TIMETABLE,
|
||||||
FEATURE_AGENDA,
|
FEATURE_AGENDA,
|
||||||
FEATURE_GRADES,
|
FEATURE_GRADES,
|
||||||
FEATURE_HOMEWORKS,
|
FEATURE_HOMEWORK,
|
||||||
FEATURE_NOTICES,
|
FEATURE_NOTICES,
|
||||||
FEATURE_ATTENDANCES,
|
FEATURE_ATTENDANCE,
|
||||||
FEATURE_MESSAGES_INBOX,
|
FEATURE_MESSAGES_INBOX,
|
||||||
FEATURE_MESSAGES_OUTBOX,
|
FEATURE_MESSAGES_OUTBOX,
|
||||||
FEATURE_ANNOUNCEMENTS
|
FEATURE_ANNOUNCEMENTS
|
||||||
@ -1130,7 +1130,7 @@ public class Edziennik {
|
|||||||
.show();
|
.show();
|
||||||
}
|
}
|
||||||
public void removeProfile(int profileId) {
|
public void removeProfile(int profileId) {
|
||||||
Profile profileObject = app.db.profileDao().getFullByIdNow(profileId);
|
Profile profileObject = app.db.profileDao().getByIdNow(profileId);
|
||||||
if (profileObject == null)
|
if (profileObject == null)
|
||||||
return;
|
return;
|
||||||
app.db.announcementDao().clear(profileId);
|
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.content.Context;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
@ -34,64 +34,64 @@ import okhttp3.HttpUrl;
|
|||||||
import pl.szczodrzynski.edziennik.App;
|
import pl.szczodrzynski.edziennik.App;
|
||||||
import pl.szczodrzynski.edziennik.BuildConfig;
|
import pl.szczodrzynski.edziennik.BuildConfig;
|
||||||
import pl.szczodrzynski.edziennik.R;
|
import pl.szczodrzynski.edziennik.R;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.AttachmentGetCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.AttachmentGetCallback;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.LoginCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.LoginCallback;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.MessageGetCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.MessageGetCallback;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.RecipientListGetCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.RecipientListGetCallback;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Announcement;
|
import pl.szczodrzynski.edziennik.data.db.modules.announcements.Announcement;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Attendance;
|
import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Event;
|
import pl.szczodrzynski.edziennik.data.db.modules.events.Event;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Grade;
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Lesson;
|
import pl.szczodrzynski.edziennik.data.db.modules.lessons.Lesson;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LessonChange;
|
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore;
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LuckyNumber;
|
import pl.szczodrzynski.edziennik.data.db.modules.luckynumber.LuckyNumber;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Message;
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.MessageFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.MessageRecipient;
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipient;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.MessageRecipientFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipientFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Metadata;
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Notice;
|
import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Profile;
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Subject;
|
import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Teacher;
|
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Team;
|
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team;
|
||||||
import pl.szczodrzynski.edziennik.messages.MessagesComposeInfo;
|
import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesComposeInfo;
|
||||||
import pl.szczodrzynski.edziennik.models.Date;
|
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||||
import pl.szczodrzynski.edziennik.models.Endpoint;
|
import pl.szczodrzynski.edziennik.utils.models.Endpoint;
|
||||||
import pl.szczodrzynski.edziennik.models.Time;
|
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||||
import pl.szczodrzynski.edziennik.models.Week;
|
import pl.szczodrzynski.edziennik.utils.models.Week;
|
||||||
|
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_INVALID_LOGIN;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_INVALID_LOGIN;
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_INVALID_SCHOOL_NAME;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_INVALID_SCHOOL_NAME;
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_MAINTENANCE;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_MAINTENANCE;
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_OTHER;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OTHER;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT_EXCUSED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT_EXCUSED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_BELATED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_BELATED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_PRESENT;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_PRESENT;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_RELEASED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_RELEASED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_FINAL;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_FINAL;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_PROPOSED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_PROPOSED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_FINAL;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_FINAL;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_PROPOSED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_PROPOSED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CANCELLED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CANCELLED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CHANGE;
|
import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CHANGE;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_DELETED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_DELETED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_RECEIVED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_RECEIVED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_SENT;
|
import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_SENT;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_NEGATIVE;
|
import static pl.szczodrzynski.edziennik.data.db.modules.notices.Notice.TYPE_NEGATIVE;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_NEUTRAL;
|
import static pl.szczodrzynski.edziennik.data.db.modules.notices.Notice.TYPE_NEUTRAL;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_POSITIVE;
|
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.crc16;
|
||||||
import static pl.szczodrzynski.edziennik.utils.Utils.crc32;
|
import static pl.szczodrzynski.edziennik.utils.Utils.crc32;
|
||||||
import static pl.szczodrzynski.edziennik.utils.Utils.d;
|
import static pl.szczodrzynski.edziennik.utils.Utils.d;
|
||||||
import static pl.szczodrzynski.edziennik.utils.Utils.getWordGradeValue;
|
import static pl.szczodrzynski.edziennik.utils.Utils.getWordGradeValue;
|
||||||
|
|
||||||
public class Iuczniowie implements OldEdziennikInterface {
|
public class Iuczniowie implements EdziennikInterface {
|
||||||
public Iuczniowie(App app) {
|
public Iuczniowie(App app) {
|
||||||
this.app = app;
|
this.app = app;
|
||||||
}
|
}
|
||||||
@ -200,7 +200,7 @@ public class Iuczniowie implements OldEdziennikInterface {
|
|||||||
targetEndpoints.add("Exams");
|
targetEndpoints.add("Exams");
|
||||||
targetEndpoints.add("Notices");
|
targetEndpoints.add("Notices");
|
||||||
targetEndpoints.add("Announcements");
|
targetEndpoints.add("Announcements");
|
||||||
targetEndpoints.add("Attendances");
|
targetEndpoints.add("Attendance");
|
||||||
targetEndpoints.add("MessagesInbox");
|
targetEndpoints.add("MessagesInbox");
|
||||||
targetEndpoints.add("MessagesOutbox");
|
targetEndpoints.add("MessagesOutbox");
|
||||||
targetEndpoints.add("Finish");
|
targetEndpoints.add("Finish");
|
||||||
@ -235,14 +235,14 @@ public class Iuczniowie implements OldEdziennikInterface {
|
|||||||
targetEndpoints.add("Grades");
|
targetEndpoints.add("Grades");
|
||||||
targetEndpoints.add("PropositionGrades");
|
targetEndpoints.add("PropositionGrades");
|
||||||
break;
|
break;
|
||||||
case FEATURE_HOMEWORKS:
|
case FEATURE_HOMEWORK:
|
||||||
targetEndpoints.add("Homeworks");
|
targetEndpoints.add("Homework");
|
||||||
break;
|
break;
|
||||||
case FEATURE_NOTICES:
|
case FEATURE_NOTICES:
|
||||||
targetEndpoints.add("Notices");
|
targetEndpoints.add("Notices");
|
||||||
break;
|
break;
|
||||||
case FEATURE_ATTENDANCES:
|
case FEATURE_ATTENDANCE:
|
||||||
targetEndpoints.add("Attendances");
|
targetEndpoints.add("Attendance");
|
||||||
break;
|
break;
|
||||||
case FEATURE_MESSAGES_INBOX:
|
case FEATURE_MESSAGES_INBOX:
|
||||||
targetEndpoints.add("MessagesInbox");
|
targetEndpoints.add("MessagesInbox");
|
||||||
@ -300,9 +300,9 @@ public class Iuczniowie implements OldEdziennikInterface {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.attendancesMonth = today.month;
|
this.attendanceMonth = today.month;
|
||||||
this.attendancesYear = today.year;
|
this.attendanceYear = today.year;
|
||||||
this.attendancesPrevMonthChecked = false;
|
this.attendancePrevMonthChecked = false;
|
||||||
this.examsMonth = today.month;
|
this.examsMonth = today.month;
|
||||||
this.examsYear = today.year;
|
this.examsYear = today.year;
|
||||||
this.examsMonthsChecked = 0;
|
this.examsMonthsChecked = 0;
|
||||||
@ -352,8 +352,8 @@ public class Iuczniowie implements OldEdziennikInterface {
|
|||||||
case "Announcements":
|
case "Announcements":
|
||||||
getAnnouncements();
|
getAnnouncements();
|
||||||
break;
|
break;
|
||||||
case "Attendances":
|
case "Attendance":
|
||||||
getAttendances();
|
getAttendance();
|
||||||
break;
|
break;
|
||||||
case "MessagesInbox":
|
case "MessagesInbox":
|
||||||
getMessagesInbox();
|
getMessagesInbox();
|
||||||
@ -880,11 +880,17 @@ public class Iuczniowie implements OldEdziennikInterface {
|
|||||||
boolean countToTheAverage = jGrade.get("DoSredniej").getAsBoolean();
|
boolean countToTheAverage = jGrade.get("DoSredniej").getAsBoolean();
|
||||||
float value = jGrade.get("WartoscDoSred").getAsFloat();
|
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(
|
Grade gradeObject = new Grade(
|
||||||
profileId,
|
profileId,
|
||||||
jGrade.get("idK").getAsLong(),
|
jGrade.get("idK").getAsLong(),
|
||||||
jGrade.get("Kategoria").getAsString(),
|
jGrade.get("Kategoria").getAsString(),
|
||||||
Color.parseColor("#"+jGrade.get("Kolor").getAsString()),
|
colorInt,
|
||||||
"",
|
"",
|
||||||
jGrade.get("Ocena").getAsString(),
|
jGrade.get("Ocena").getAsString(),
|
||||||
value,
|
value,
|
||||||
@ -1190,17 +1196,17 @@ public class Iuczniowie implements OldEdziennikInterface {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private int attendancesYear;
|
private int attendanceYear;
|
||||||
private int attendancesMonth;
|
private int attendanceMonth;
|
||||||
private boolean attendancesPrevMonthChecked = false;
|
private boolean attendancePrevMonthChecked = false;
|
||||||
private void getAttendances() {
|
private void getAttendance() {
|
||||||
callback.onActionStarted(R.string.sync_action_syncing_attendances);
|
callback.onActionStarted(R.string.sync_action_syncing_attendance);
|
||||||
apiRequest(Request.builder()
|
apiRequest(Request.builder()
|
||||||
.url(IDZIENNIK_URL +"/mod_panelRodzica/obecnosci/WS_obecnosciUcznia.asmx/pobierzObecnosciUcznia")
|
.url(IDZIENNIK_URL +"/mod_panelRodzica/obecnosci/WS_obecnosciUcznia.asmx/pobierzObecnosciUcznia")
|
||||||
.userAgent(userAgent)
|
.userAgent(userAgent)
|
||||||
.addParameter("idPozDziennika", loginRegisterId)
|
.addParameter("idPozDziennika", loginRegisterId)
|
||||||
.addParameter("mc", attendancesMonth)
|
.addParameter("mc", attendanceMonth)
|
||||||
.addParameter("rok", attendancesYear)
|
.addParameter("rok", attendanceYear)
|
||||||
.addParameter("dataTygodnia", "")
|
.addParameter("dataTygodnia", "")
|
||||||
.postJson(), (result, response) -> {
|
.postJson(), (result, response) -> {
|
||||||
JsonObject data = result.getAsJsonObject("d");
|
JsonObject data = result.getAsJsonObject("d");
|
||||||
@ -1275,25 +1281,25 @@ public class Iuczniowie implements OldEdziennikInterface {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int attendancesDateValue = attendancesYear*10000 + attendancesMonth*100;
|
int attendanceDateValue = attendanceYear *10000 + attendanceMonth *100;
|
||||||
if (profile.getEmpty() && attendancesDateValue > profile.getSemesterStart(1).getValue()) {
|
if (profile.getEmpty() && attendanceDateValue > profile.getSemesterStart(1).getValue()) {
|
||||||
attendancesPrevMonthChecked = true; // do not need to check prev month later
|
attendancePrevMonthChecked = true; // do not need to check prev month later
|
||||||
attendancesMonth--;
|
attendanceMonth--;
|
||||||
if (attendancesMonth < 1) {
|
if (attendanceMonth < 1) {
|
||||||
attendancesMonth = 12;
|
attendanceMonth = 12;
|
||||||
attendancesYear--;
|
attendanceYear--;
|
||||||
}
|
}
|
||||||
r("get", "Attendances");
|
r("get", "Attendance");
|
||||||
} else if (!attendancesPrevMonthChecked /* get also the previous month */) {
|
} else if (!attendancePrevMonthChecked /* get also the previous month */) {
|
||||||
attendancesMonth--;
|
attendanceMonth--;
|
||||||
if (attendancesMonth < 1) {
|
if (attendanceMonth < 1) {
|
||||||
attendancesMonth = 12;
|
attendanceMonth = 12;
|
||||||
attendancesYear--;
|
attendanceYear--;
|
||||||
}
|
}
|
||||||
attendancesPrevMonthChecked = true;
|
attendancePrevMonthChecked = true;
|
||||||
r("get", "Attendances");
|
r("get", "Attendance");
|
||||||
} else {
|
} 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.content.Context;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
@ -45,38 +45,40 @@ import im.wangchao.mhttp.callback.TextCallbackHandler;
|
|||||||
import pl.szczodrzynski.edziennik.App;
|
import pl.szczodrzynski.edziennik.App;
|
||||||
import pl.szczodrzynski.edziennik.BuildConfig;
|
import pl.szczodrzynski.edziennik.BuildConfig;
|
||||||
import pl.szczodrzynski.edziennik.R;
|
import pl.szczodrzynski.edziennik.R;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.AttachmentGetCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.AttachmentGetCallback;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.LoginCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.LoginCallback;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.MessageGetCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.MessageGetCallback;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.RecipientListGetCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.RecipientListGetCallback;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Announcement;
|
import pl.szczodrzynski.edziennik.data.api.v2.models.DataStore;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Attendance;
|
import pl.szczodrzynski.edziennik.data.db.modules.announcements.Announcement;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Event;
|
import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.EventType;
|
import pl.szczodrzynski.edziennik.data.db.modules.events.Event;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Grade;
|
import pl.szczodrzynski.edziennik.data.db.modules.events.EventType;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.GradeCategory;
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Lesson;
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LessonChange;
|
import pl.szczodrzynski.edziennik.data.db.modules.lessons.Lesson;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore;
|
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LuckyNumber;
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Message;
|
import pl.szczodrzynski.edziennik.data.db.modules.luckynumber.LuckyNumber;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.MessageFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.MessageRecipient;
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.MessageRecipientFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipient;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Metadata;
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipientFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Notice;
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Profile;
|
import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Subject;
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Teacher;
|
import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Team;
|
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher;
|
||||||
import pl.szczodrzynski.edziennik.messages.MessagesComposeInfo;
|
import pl.szczodrzynski.edziennik.data.db.modules.teachers.TeacherAbsence;
|
||||||
import pl.szczodrzynski.edziennik.models.Date;
|
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team;
|
||||||
import pl.szczodrzynski.edziennik.models.Endpoint;
|
import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesComposeInfo;
|
||||||
import pl.szczodrzynski.edziennik.models.Time;
|
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||||
import pl.szczodrzynski.edziennik.models.Week;
|
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 pl.szczodrzynski.edziennik.utils.Utils;
|
||||||
|
|
||||||
import static java.net.HttpURLConnection.HTTP_BAD_REQUEST;
|
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_NOT_FOUND;
|
||||||
import static java.net.HttpURLConnection.HTTP_OK;
|
import static java.net.HttpURLConnection.HTTP_OK;
|
||||||
import static java.net.HttpURLConnection.HTTP_UNAUTHORIZED;
|
import static java.net.HttpURLConnection.HTTP_UNAUTHORIZED;
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_INVALID_LOGIN;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_INVALID_LOGIN;
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_LIBRUS_DISCONNECTED;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_LIBRUS_DISCONNECTED;
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_LIBRUS_NOT_ACTIVATED;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_LIBRUS_NOT_ACTIVATED;
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_MAINTENANCE;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_MAINTENANCE;
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_OTHER;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OTHER;
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_PROFILE_NOT_FOUND;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_PROFILE_NOT_FOUND;
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_SYNERGIA_NOT_ACTIVATED;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_SYNERGIA_NOT_ACTIVATED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT_EXCUSED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT_EXCUSED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_BELATED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_BELATED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_PRESENT;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_PRESENT;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_RELEASED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_RELEASED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_PT_MEETING;
|
import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_PT_MEETING;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_TEACHER_ABSENCE;
|
import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_TEACHER_ABSENCE;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_NORMAL;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_NORMAL;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_FINAL;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_FINAL;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_PROPOSED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_PROPOSED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_FINAL;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_FINAL;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_PROPOSED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_PROPOSED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_FINAL;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_FINAL;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_PROPOSED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_PROPOSED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CANCELLED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CANCELLED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CHANGE;
|
import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CHANGE;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_RECEIVED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_RECEIVED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_SENT;
|
import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_SENT;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_NEGATIVE;
|
import static pl.szczodrzynski.edziennik.data.db.modules.notices.Notice.TYPE_NEGATIVE;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_NEUTRAL;
|
import static pl.szczodrzynski.edziennik.data.db.modules.notices.Notice.TYPE_NEUTRAL;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_POSITIVE;
|
import static pl.szczodrzynski.edziennik.data.db.modules.notices.Notice.TYPE_POSITIVE;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_EDUCATOR;
|
import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_EDUCATOR;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_LIBRARIAN;
|
import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_LIBRARIAN;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_OTHER;
|
import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_OTHER;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_PARENTS_COUNCIL;
|
import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_PARENTS_COUNCIL;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_PEDAGOGUE;
|
import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_PEDAGOGUE;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_SCHOOL_ADMIN;
|
import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_SCHOOL_ADMIN;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_SCHOOL_PARENTS_COUNCIL;
|
import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_SCHOOL_PARENTS_COUNCIL;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_SECRETARIAT;
|
import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_SECRETARIAT;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_SUPER_ADMIN;
|
import static pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher.TYPE_SUPER_ADMIN;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Teacher.TYPE_TEACHER;
|
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.bs;
|
||||||
import static pl.szczodrzynski.edziennik.utils.Utils.c;
|
import static pl.szczodrzynski.edziennik.utils.Utils.c;
|
||||||
import static pl.szczodrzynski.edziennik.utils.Utils.contains;
|
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.getGradeValue;
|
||||||
import static pl.szczodrzynski.edziennik.utils.Utils.strToInt;
|
import static pl.szczodrzynski.edziennik.utils.Utils.strToInt;
|
||||||
|
|
||||||
public class Librus implements OldEdziennikInterface {
|
public class Librus implements EdziennikInterface {
|
||||||
public Librus(App app) {
|
public Librus(App app) {
|
||||||
this.app = app;
|
this.app = app;
|
||||||
}
|
}
|
||||||
@ -169,6 +171,7 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
|
|
||||||
private List<Team> teamList;
|
private List<Team> teamList;
|
||||||
private List<Teacher> teacherList;
|
private List<Teacher> teacherList;
|
||||||
|
private List<TeacherAbsence> teacherAbsenceList;
|
||||||
private List<Subject> subjectList;
|
private List<Subject> subjectList;
|
||||||
private List<Lesson> lessonList;
|
private List<Lesson> lessonList;
|
||||||
private List<LessonChange> lessonChangeList;
|
private List<LessonChange> lessonChangeList;
|
||||||
@ -198,6 +201,7 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
private boolean enableDescriptiveGrades = false;
|
private boolean enableDescriptiveGrades = false;
|
||||||
private boolean enableTextGrades = false;
|
private boolean enableTextGrades = false;
|
||||||
private boolean enableBehaviourGrades = true;
|
private boolean enableBehaviourGrades = true;
|
||||||
|
private long unitId = -1;
|
||||||
private int startPointsSemester1 = 0;
|
private int startPointsSemester1 = 0;
|
||||||
private int startPointsSemester2 = 0;
|
private int startPointsSemester2 = 0;
|
||||||
|
|
||||||
@ -212,6 +216,8 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
this.fullSync = profile == null || profile.getEmpty() || profile.shouldFullSync(activityContext);
|
this.fullSync = profile == null || profile.getEmpty() || profile.shouldFullSync(activityContext);
|
||||||
this.today = Date.getToday();
|
this.today = Date.getToday();
|
||||||
|
|
||||||
|
DataStore ds = new DataStore(app.db, profileId);
|
||||||
|
|
||||||
this.librusEmail = loginStore.getLoginData("email", "");
|
this.librusEmail = loginStore.getLoginData("email", "");
|
||||||
this.librusPassword = loginStore.getLoginData("password", "");
|
this.librusPassword = loginStore.getLoginData("password", "");
|
||||||
if (profile == null) {
|
if (profile == null) {
|
||||||
@ -236,6 +242,7 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
|
|
||||||
teamList = profileId == -1 ? new ArrayList<>() : app.db.teamDao().getAllNow(profileId);
|
teamList = profileId == -1 ? new ArrayList<>() : app.db.teamDao().getAllNow(profileId);
|
||||||
teacherList = profileId == -1 ? new ArrayList<>() : app.db.teacherDao().getAllNow(profileId);
|
teacherList = profileId == -1 ? new ArrayList<>() : app.db.teacherDao().getAllNow(profileId);
|
||||||
|
teacherAbsenceList = new ArrayList<>();
|
||||||
subjectList = new ArrayList<>();
|
subjectList = new ArrayList<>();
|
||||||
lessonList = new ArrayList<>();
|
lessonList = new ArrayList<>();
|
||||||
lessonChangeList = new ArrayList<>();
|
lessonChangeList = new ArrayList<>();
|
||||||
@ -285,15 +292,18 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
targetEndpoints.add("Grades");
|
targetEndpoints.add("Grades");
|
||||||
targetEndpoints.add("PointGrades");
|
targetEndpoints.add("PointGrades");
|
||||||
targetEndpoints.add("DescriptiveGrades");
|
targetEndpoints.add("DescriptiveGrades");
|
||||||
|
targetEndpoints.add("TextGrades");
|
||||||
targetEndpoints.add("BehaviourGrades");
|
targetEndpoints.add("BehaviourGrades");
|
||||||
|
targetEndpoints.add("GradesComments");
|
||||||
|
|
||||||
targetEndpoints.add("Events");
|
targetEndpoints.add("Events");
|
||||||
|
targetEndpoints.add("TeacherFreeDays");
|
||||||
targetEndpoints.add("CustomTypes");
|
targetEndpoints.add("CustomTypes");
|
||||||
targetEndpoints.add("Homeworks");
|
targetEndpoints.add("Homework");
|
||||||
targetEndpoints.add("LuckyNumbers");
|
targetEndpoints.add("LuckyNumbers");
|
||||||
targetEndpoints.add("Notices");
|
targetEndpoints.add("Notices");
|
||||||
targetEndpoints.add("AttendancesTypes");
|
targetEndpoints.add("AttendanceTypes");
|
||||||
targetEndpoints.add("Attendances");
|
targetEndpoints.add("Attendance");
|
||||||
targetEndpoints.add("Announcements");
|
targetEndpoints.add("Announcements");
|
||||||
targetEndpoints.add("PtMeetings");
|
targetEndpoints.add("PtMeetings");
|
||||||
|
|
||||||
@ -343,6 +353,8 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
targetEndpoints.add("Events");
|
targetEndpoints.add("Events");
|
||||||
targetEndpoints.add("CustomTypes");
|
targetEndpoints.add("CustomTypes");
|
||||||
targetEndpoints.add("PtMeetings");
|
targetEndpoints.add("PtMeetings");
|
||||||
|
targetEndpoints.add("SchoolFreeDays");
|
||||||
|
targetEndpoints.add("TeacherFreeDays");
|
||||||
break;
|
break;
|
||||||
case FEATURE_GRADES:
|
case FEATURE_GRADES:
|
||||||
targetEndpoints.add("SavedGradeCategories");
|
targetEndpoints.add("SavedGradeCategories");
|
||||||
@ -356,17 +368,20 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
targetEndpoints.add("Grades");
|
targetEndpoints.add("Grades");
|
||||||
targetEndpoints.add("PointGrades");
|
targetEndpoints.add("PointGrades");
|
||||||
targetEndpoints.add("DescriptiveGrades");
|
targetEndpoints.add("DescriptiveGrades");
|
||||||
|
targetEndpoints.add("TextGrades");
|
||||||
targetEndpoints.add("BehaviourGrades");
|
targetEndpoints.add("BehaviourGrades");
|
||||||
|
|
||||||
|
targetEndpoints.add("GradesComments");
|
||||||
break;
|
break;
|
||||||
case FEATURE_HOMEWORKS:
|
case FEATURE_HOMEWORK:
|
||||||
targetEndpoints.add("Homeworks");
|
targetEndpoints.add("Homework");
|
||||||
break;
|
break;
|
||||||
case FEATURE_NOTICES:
|
case FEATURE_NOTICES:
|
||||||
targetEndpoints.add("Notices");
|
targetEndpoints.add("Notices");
|
||||||
break;
|
break;
|
||||||
case FEATURE_ATTENDANCES:
|
case FEATURE_ATTENDANCE:
|
||||||
targetEndpoints.add("AttendancesTypes");
|
targetEndpoints.add("AttendanceTypes");
|
||||||
targetEndpoints.add("Attendances");
|
targetEndpoints.add("Attendance");
|
||||||
break;
|
break;
|
||||||
case FEATURE_MESSAGES_INBOX:
|
case FEATURE_MESSAGES_INBOX:
|
||||||
if (!hasMessagesLogin) {
|
if (!hasMessagesLogin) {
|
||||||
@ -430,6 +445,10 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
callback.onProgress(PROGRESS_STEP);
|
callback.onProgress(PROGRESS_STEP);
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
|
if (index > targetEndpoints.size()) {
|
||||||
|
finish();
|
||||||
|
return;
|
||||||
|
}
|
||||||
d(TAG, "Called r("+type+", "+endpoint+"). Getting "+targetEndpoints.get(index));
|
d(TAG, "Called r("+type+", "+endpoint+"). Getting "+targetEndpoints.get(index));
|
||||||
switch (targetEndpoints.get(index)) {
|
switch (targetEndpoints.get(index)) {
|
||||||
case "Me":
|
case "Me":
|
||||||
@ -495,6 +514,12 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
case "DescriptiveGrades":
|
case "DescriptiveGrades":
|
||||||
getDescriptiveGrades();
|
getDescriptiveGrades();
|
||||||
break;
|
break;
|
||||||
|
case "TextGrades":
|
||||||
|
getTextGrades();
|
||||||
|
break;
|
||||||
|
case "GradesComments":
|
||||||
|
getGradesComments();
|
||||||
|
break;
|
||||||
case "BehaviourGrades":
|
case "BehaviourGrades":
|
||||||
getBehaviourGrades();
|
getBehaviourGrades();
|
||||||
break;
|
break;
|
||||||
@ -504,8 +529,8 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
case "CustomTypes":
|
case "CustomTypes":
|
||||||
getCustomTypes();
|
getCustomTypes();
|
||||||
break;
|
break;
|
||||||
case "Homeworks":
|
case "Homework":
|
||||||
getHomeworks();
|
getHomework();
|
||||||
break;
|
break;
|
||||||
case "LuckyNumbers":
|
case "LuckyNumbers":
|
||||||
getLuckyNumbers();
|
getLuckyNumbers();
|
||||||
@ -513,11 +538,11 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
case "Notices":
|
case "Notices":
|
||||||
getNotices();
|
getNotices();
|
||||||
break;
|
break;
|
||||||
case "AttendancesTypes":
|
case "AttendanceTypes":
|
||||||
getAttendancesTypes();
|
getAttendanceTypes();
|
||||||
break;
|
break;
|
||||||
case "Attendances":
|
case "Attendance":
|
||||||
getAttendances();
|
getAttendance();
|
||||||
break;
|
break;
|
||||||
case "Announcements":
|
case "Announcements":
|
||||||
getAnnouncements();
|
getAnnouncements();
|
||||||
@ -531,6 +556,9 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
case "TeacherFreeDays":
|
case "TeacherFreeDays":
|
||||||
getTeacherFreeDays();
|
getTeacherFreeDays();
|
||||||
break;
|
break;
|
||||||
|
case "SchoolFreeDays":
|
||||||
|
getSchoolFreeDays();
|
||||||
|
break;
|
||||||
case "MessagesLogin":
|
case "MessagesLogin":
|
||||||
getMessagesLogin();
|
getMessagesLogin();
|
||||||
break;
|
break;
|
||||||
@ -572,6 +600,8 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
}
|
}
|
||||||
if (eventTypeList.size() > 0)
|
if (eventTypeList.size() > 0)
|
||||||
app.db.eventTypeDao().addAll(eventTypeList);
|
app.db.eventTypeDao().addAll(eventTypeList);
|
||||||
|
if (teacherAbsenceList.size() > 0)
|
||||||
|
app.db.teacherAbsenceDao().addAll(teacherAbsenceList);
|
||||||
if (noticeList.size() > 0) {
|
if (noticeList.size() > 0) {
|
||||||
app.db.noticeDao().clear(profileId);
|
app.db.noticeDao().clear(profileId);
|
||||||
app.db.noticeDao().addAll(noticeList);
|
app.db.noticeDao().addAll(noticeList);
|
||||||
@ -641,7 +671,7 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
};
|
};
|
||||||
|
|
||||||
librusLoginCallback = redirectUrl -> {
|
librusLoginCallback = redirectUrl -> {
|
||||||
fakeAuthorize = "authorize2";
|
fakeAuthorize = "authorize";
|
||||||
authorize(AUTHORIZE_URL, authorizeCallback);
|
authorize(AUTHORIZE_URL, authorizeCallback);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1400,7 +1430,8 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
}
|
}
|
||||||
JsonElement unit = myClass.get("Unit");
|
JsonElement unit = myClass.get("Unit");
|
||||||
if (unit != null && !(unit instanceof JsonNull)) {
|
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");
|
r("finish", "Classes");
|
||||||
}
|
}
|
||||||
@ -1597,6 +1628,10 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
r("finish", "Classrooms");
|
r("finish", "Classrooms");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (data.get("Classrooms") == null) {
|
||||||
|
r("finish", "Classrooms");
|
||||||
|
return;
|
||||||
|
}
|
||||||
JsonArray jClassrooms = data.get("Classrooms").getAsJsonArray();
|
JsonArray jClassrooms = data.get("Classrooms").getAsJsonArray();
|
||||||
//d("Got Classrooms: "+jClassrooms.toString());
|
//d("Got Classrooms: "+jClassrooms.toString());
|
||||||
classrooms.clear();
|
classrooms.clear();
|
||||||
@ -1655,11 +1690,32 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
continue;
|
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(
|
Lesson lessonObject = new Lesson(
|
||||||
profileId,
|
profileId,
|
||||||
lesson.get("DayNo").getAsInt() - 1,
|
lesson.get("DayNo").getAsInt() - 1,
|
||||||
Time.fromH_m(lesson.get(substitution && !cancelled ? "OrgHourFrom" : "HourFrom").getAsString()),
|
startTime,
|
||||||
Time.fromH_m(lesson.get(substitution && !cancelled ? "OrgHourTo" : "HourTo").getAsString())
|
endTime
|
||||||
);
|
);
|
||||||
|
|
||||||
JsonElement subject;
|
JsonElement subject;
|
||||||
@ -1704,7 +1760,7 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
r("finish", "Substitutions");
|
r("finish", "Substitutions");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonArray substitutions = data.get("Substitutions").getAsJsonArray();
|
JsonArray substitutions = data.get("Substitutions").getAsJsonArray();
|
||||||
try {
|
try {
|
||||||
List<Long> ignoreList = new ArrayList<>();
|
List<Long> ignoreList = new ArrayList<>();
|
||||||
@ -1873,7 +1929,7 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void getGradesCategories() {
|
private void getGradesCategories() {
|
||||||
if (!fullSync) {
|
if (!fullSync && false) {
|
||||||
// cancel every not-full sync; no need to download categories again
|
// 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
|
// every full sync it'll be enabled to make sure there are no grades - by getUnits
|
||||||
r("finish", "GradesCategories");
|
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() {
|
private void getPointGradesCategories() {
|
||||||
if (!fullSync || !enablePointGrades) {
|
if (!fullSync || !enablePointGrades) {
|
||||||
// cancel every not-full sync; no need to download categories again
|
// 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() {
|
private void getBehaviourGrades() {
|
||||||
d(TAG, "Grades settings: "+enableStandardGrades+", "+enablePointGrades+", "+enableDescriptiveGrades);
|
d(TAG, "Grades settings: "+enableStandardGrades+", "+enablePointGrades+", "+enableDescriptiveGrades);
|
||||||
if (!enableBehaviourGrades) {
|
if (!enableBehaviourGrades) {
|
||||||
@ -2537,7 +2683,7 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
&& (el = obj.get("Id")) != null) {
|
&& (el = obj.get("Id")) != null) {
|
||||||
type = el.getAsInt();
|
type = el.getAsInt();
|
||||||
}
|
}
|
||||||
/*EventType typeObject = app.db.eventTypeDao().getFullByIdNow(profileId, type);
|
/*EventType typeObject = app.db.eventTypeDao().getByIdNow(profileId, type);
|
||||||
if (typeObject == null) {
|
if (typeObject == null) {
|
||||||
getCustomTypes = true;
|
getCustomTypes = true;
|
||||||
}*/
|
}*/
|
||||||
@ -2615,21 +2761,21 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getHomeworks() {
|
private void getHomework() {
|
||||||
if (!premium) {
|
if (!premium) {
|
||||||
r("finish", "Homeworks");
|
r("finish", "Homework");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
callback.onActionStarted(R.string.sync_action_syncing_homework);
|
callback.onActionStarted(R.string.sync_action_syncing_homework);
|
||||||
apiRequest("HomeWorkAssignments", data -> {
|
apiRequest("HomeWorkAssignments", data -> {
|
||||||
if (data == null) {
|
if (data == null) {
|
||||||
r("finish", "Homeworks");
|
r("finish", "Homework");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
JsonArray homeworks = data.get("HomeWorkAssignments").getAsJsonArray();
|
JsonArray homeworkList = data.get("HomeWorkAssignments").getAsJsonArray();
|
||||||
//d("Got Grades: "+events.toString());
|
//d("Got Grades: "+events.toString());
|
||||||
try {
|
try {
|
||||||
for (JsonElement homeworkEl : homeworks) {
|
for (JsonElement homeworkEl : homeworkList) {
|
||||||
JsonObject homework = homeworkEl.getAsJsonObject();
|
JsonObject homework = homeworkEl.getAsJsonObject();
|
||||||
|
|
||||||
JsonElement el;
|
JsonElement el;
|
||||||
@ -2680,7 +2826,7 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
eventList.add(eventObject);
|
eventList.add(eventObject);
|
||||||
metadataList.add(new Metadata(profileId, Metadata.TYPE_EVENT, eventObject.id, profile.getEmpty(), profile.getEmpty(), addedDate.getInMillis()));
|
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) {
|
catch (Exception e) {
|
||||||
finishWithError(new AppError(TAG, 2648, CODE_OTHER, e, data));
|
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 SparseArray<Pair<Integer, String>> attendanceTypes = new SparseArray<>();
|
||||||
private void getAttendancesTypes() {
|
private void getAttendanceTypes() {
|
||||||
callback.onActionStarted(R.string.sync_action_syncing_attendance_types);
|
callback.onActionStarted(R.string.sync_action_syncing_attendance_types);
|
||||||
apiRequest("Attendances/Types", data -> {
|
apiRequest("Attendances/Types", data -> {
|
||||||
if (data == null) {
|
if (data == null) {
|
||||||
r("finish", "AttendancesTypes");
|
r("finish", "AttendanceTypes");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
@ -2800,7 +2946,7 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
r("finish", "AttendancesTypes");
|
r("finish", "AttendanceTypes");
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
finishWithError(new AppError(TAG, 2782, CODE_OTHER, e, data));
|
finishWithError(new AppError(TAG, 2782, CODE_OTHER, e, data));
|
||||||
@ -2808,18 +2954,18 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getAttendances() {
|
private void getAttendance() {
|
||||||
callback.onActionStarted(R.string.sync_action_syncing_attendances);
|
callback.onActionStarted(R.string.sync_action_syncing_attendance);
|
||||||
apiRequest("Attendances"+(fullSync ? "" : "?dateFrom="+ Date.getToday().stepForward(0, -1, 0).getStringY_m_d()), data -> {
|
apiRequest("Attendances"+(fullSync ? "" : "?dateFrom="+ Date.getToday().stepForward(0, -1, 0).getStringY_m_d()), data -> {
|
||||||
if (data == null) {
|
if (data == null) {
|
||||||
r("finish", "Attendances");
|
r("finish", "Attendance");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
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();
|
JsonObject attendance = attendanceEl.getAsJsonObject();
|
||||||
|
|
||||||
int type = attendance.getAsJsonObject("Type").get("Id").getAsInt();
|
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));
|
metadataList.add(new Metadata(profileId, Metadata.TYPE_ATTENDANCE, attendanceObject.id, profile.getEmpty(), profile.getEmpty(), addedDate));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
r("finish", "Attendances");
|
r("finish", "Attendance");
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
finishWithError(new AppError(TAG, 2872, CODE_OTHER, e, data));
|
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 SparseArray<String> teacherFreeDaysTypes = new SparseArray<>();
|
||||||
private void getTeacherFreeDaysTypes() {
|
private void getTeacherFreeDaysTypes() {
|
||||||
|
if (!fullSync) {
|
||||||
|
r("finish", "TeacherFreeDaysTypes");
|
||||||
|
return;
|
||||||
|
}
|
||||||
callback.onActionStarted(R.string.sync_action_syncing_teacher_free_days_types);
|
callback.onActionStarted(R.string.sync_action_syncing_teacher_free_days_types);
|
||||||
apiRequest("TeacherFreeDays/Types", data -> {
|
apiRequest("TeacherFreeDays/Types", data -> {
|
||||||
if (data == null) {
|
if (data == null) {
|
||||||
@ -3034,27 +3184,45 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
JsonObject freeDay = freeDayEl.getAsJsonObject();
|
JsonObject freeDay = freeDayEl.getAsJsonObject();
|
||||||
|
|
||||||
long id = freeDay.get("Id").getAsLong();
|
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 dateFrom = Date.fromY_m_d(freeDay.get("DateFrom").getAsString());
|
||||||
Date dateTo = Date.fromY_m_d(freeDay.get("DateTo").getAsString());
|
Date dateTo = Date.fromY_m_d(freeDay.get("DateTo").getAsString());
|
||||||
|
|
||||||
int type = freeDay.getAsJsonObject("Type").get("Id").getAsInt();
|
Time timeFrom = null;
|
||||||
String topic = teacherFreeDaysTypes.get(type)+"\n"+(dateFrom.getValue() != dateTo.getValue() ? dateFrom.getFormattedString()+" - "+dateTo.getFormattedString() : "");
|
Time timeTo = null;
|
||||||
Event eventObject = new Event(
|
|
||||||
|
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,
|
profileId,
|
||||||
id,
|
id,
|
||||||
|
teacherId,
|
||||||
|
type,
|
||||||
dateFrom,
|
dateFrom,
|
||||||
null,
|
dateTo,
|
||||||
topic,
|
timeFrom,
|
||||||
-1,
|
timeTo
|
||||||
TYPE_TEACHER_ABSENCE,
|
|
||||||
false,
|
|
||||||
freeDay.getAsJsonObject("Teacher").get("Id").getAsLong(),
|
|
||||||
-1,
|
|
||||||
-1
|
|
||||||
);
|
);
|
||||||
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");
|
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() {
|
private void getMessagesLogin() {
|
||||||
if (synergiaPassword == null) {
|
if (synergiaPassword == null) {
|
||||||
// skip messages
|
// skip messages
|
||||||
@ -3250,10 +3438,10 @@ public class Librus implements OldEdziennikInterface {
|
|||||||
configurableEndpoints.put("Grades", new Endpoint("Grades",true, false, profile.getChangedEndpoints()));
|
configurableEndpoints.put("Grades", new Endpoint("Grades",true, false, profile.getChangedEndpoints()));
|
||||||
configurableEndpoints.put("PointGrades", new Endpoint("PointGrades",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("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("LuckyNumbers", new Endpoint("LuckyNumbers",true, false, profile.getChangedEndpoints()));
|
||||||
configurableEndpoints.put("Notices", new Endpoint("Notices",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("Announcements", new Endpoint("Announcements",true, true, profile.getChangedEndpoints()));
|
||||||
configurableEndpoints.put("PtMeetings", new Endpoint("PtMeetings",true, true, profile.getChangedEndpoints()));
|
configurableEndpoints.put("PtMeetings", new Endpoint("PtMeetings",true, true, profile.getChangedEndpoints()));
|
||||||
configurableEndpoints.put("TeacherFreeDays", new Endpoint("TeacherFreeDays",false, false, 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) {
|
public MessagesComposeInfo getComposeInfo(@NonNull ProfileFull profile) {
|
||||||
return new MessagesComposeInfo(0, 0, 150, 20000);
|
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.content.Context;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
@ -40,66 +40,66 @@ import im.wangchao.mhttp.callback.TextCallbackHandler;
|
|||||||
import pl.szczodrzynski.edziennik.App;
|
import pl.szczodrzynski.edziennik.App;
|
||||||
import pl.szczodrzynski.edziennik.BuildConfig;
|
import pl.szczodrzynski.edziennik.BuildConfig;
|
||||||
import pl.szczodrzynski.edziennik.R;
|
import pl.szczodrzynski.edziennik.R;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.AttachmentGetCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.AttachmentGetCallback;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.LoginCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.LoginCallback;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.MessageGetCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.MessageGetCallback;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.RecipientListGetCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.RecipientListGetCallback;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Attendance;
|
import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Event;
|
import pl.szczodrzynski.edziennik.data.db.modules.events.Event;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Grade;
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.GradeCategory;
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Lesson;
|
import pl.szczodrzynski.edziennik.data.db.modules.lessons.Lesson;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LessonChange;
|
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore;
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LuckyNumber;
|
import pl.szczodrzynski.edziennik.data.db.modules.luckynumber.LuckyNumber;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Message;
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.MessageFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.MessageRecipient;
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipient;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.MessageRecipientFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipientFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Metadata;
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Notice;
|
import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Profile;
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Subject;
|
import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Teacher;
|
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Team;
|
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team;
|
||||||
import pl.szczodrzynski.edziennik.messages.MessagesComposeInfo;
|
import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesComposeInfo;
|
||||||
import pl.szczodrzynski.edziennik.models.Date;
|
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||||
import pl.szczodrzynski.edziennik.models.Endpoint;
|
import pl.szczodrzynski.edziennik.utils.models.Endpoint;
|
||||||
import pl.szczodrzynski.edziennik.models.Time;
|
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||||
import pl.szczodrzynski.edziennik.models.Week;
|
import pl.szczodrzynski.edziennik.utils.models.Week;
|
||||||
|
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_INVALID_LOGIN;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_INVALID_LOGIN;
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_MAINTENANCE;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_MAINTENANCE;
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_OTHER;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OTHER;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT_EXCUSED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT_EXCUSED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_BELATED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_BELATED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_CUSTOM;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_CUSTOM;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_PRESENT;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_PRESENT;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_RELEASED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_RELEASED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_DEFAULT;
|
import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_DEFAULT;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_EXAM;
|
import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_EXAM;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_SHORT_QUIZ;
|
import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_SHORT_QUIZ;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_FINAL;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_FINAL;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_PROPOSED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_PROPOSED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_FINAL;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_FINAL;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_PROPOSED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_PROPOSED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_FINAL;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_FINAL;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_YEAR_PROPOSED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_YEAR_PROPOSED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_MOBIDZIENNIK;
|
import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_MOBIDZIENNIK;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_DELETED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_DELETED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_RECEIVED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_RECEIVED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_SENT;
|
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.bs;
|
||||||
import static pl.szczodrzynski.edziennik.utils.Utils.crc16;
|
import static pl.szczodrzynski.edziennik.utils.Utils.crc16;
|
||||||
import static pl.szczodrzynski.edziennik.utils.Utils.d;
|
import static pl.szczodrzynski.edziennik.utils.Utils.d;
|
||||||
import static pl.szczodrzynski.edziennik.utils.Utils.monthFromName;
|
import static pl.szczodrzynski.edziennik.utils.Utils.monthFromName;
|
||||||
import static pl.szczodrzynski.edziennik.utils.Utils.strToInt;
|
import static pl.szczodrzynski.edziennik.utils.Utils.strToInt;
|
||||||
|
|
||||||
public class Mobidziennik implements OldEdziennikInterface {
|
public class Mobidziennik implements EdziennikInterface {
|
||||||
public Mobidziennik(App app) {
|
public Mobidziennik(App app) {
|
||||||
this.app = app;
|
this.app = app;
|
||||||
}
|
}
|
||||||
@ -150,7 +150,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
|||||||
private String loginPassword = null;
|
private String loginPassword = null;
|
||||||
private int studentId = -1;
|
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) {
|
private boolean prepare(@NonNull Context activityContext, @NonNull SyncCallback callback, int profileId, @Nullable Profile profile, @NonNull LoginStore loginStore) {
|
||||||
this.activityContext = activityContext;
|
this.activityContext = activityContext;
|
||||||
@ -171,7 +171,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
this.studentId = profile == null ? -1 : profile.getStudentData("studentId", -1);
|
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");
|
fakeLogin = BuildConfig.DEBUG && loginUsername.toLowerCase().startsWith("fake");
|
||||||
|
|
||||||
teamList = profileId == -1 ? new ArrayList<>() : app.db.teamDao().getAllNow(profileId);
|
teamList = profileId == -1 ? new ArrayList<>() : app.db.teamDao().getAllNow(profileId);
|
||||||
@ -204,7 +204,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
|||||||
targetEndpoints = new ArrayList<>();
|
targetEndpoints = new ArrayList<>();
|
||||||
targetEndpoints.add("GetData");
|
targetEndpoints.add("GetData");
|
||||||
targetEndpoints.add("ProcessData");
|
targetEndpoints.add("ProcessData");
|
||||||
targetEndpoints.add("Attendances");
|
targetEndpoints.add("Attendance");
|
||||||
targetEndpoints.add("ClassCalendar");
|
targetEndpoints.add("ClassCalendar");
|
||||||
targetEndpoints.add("GradeDetails");
|
targetEndpoints.add("GradeDetails");
|
||||||
targetEndpoints.add("NoticeDetails");
|
targetEndpoints.add("NoticeDetails");
|
||||||
@ -256,8 +256,8 @@ public class Mobidziennik implements OldEdziennikInterface {
|
|||||||
case FEATURE_NOTICES:
|
case FEATURE_NOTICES:
|
||||||
targetEndpoints.add("NoticeDetails");
|
targetEndpoints.add("NoticeDetails");
|
||||||
break;
|
break;
|
||||||
case FEATURE_ATTENDANCES:
|
case FEATURE_ATTENDANCE:
|
||||||
targetEndpoints.add("Attendances");
|
targetEndpoints.add("Attendance");
|
||||||
break;
|
break;
|
||||||
case FEATURE_MESSAGES_INBOX:
|
case FEATURE_MESSAGES_INBOX:
|
||||||
targetEndpoints.add("MessagesInbox");
|
targetEndpoints.add("MessagesInbox");
|
||||||
@ -314,8 +314,8 @@ public class Mobidziennik implements OldEdziennikInterface {
|
|||||||
case "NoticeDetails":
|
case "NoticeDetails":
|
||||||
getNoticeDetails();
|
getNoticeDetails();
|
||||||
break;
|
break;
|
||||||
case "Attendances":
|
case "Attendance":
|
||||||
getAttendances();
|
getAttendance();
|
||||||
break;
|
break;
|
||||||
case "Messages":
|
case "Messages":
|
||||||
getAllMessages();
|
getAllMessages();
|
||||||
@ -597,7 +597,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
|||||||
processLessons(table);
|
processLessons(table);
|
||||||
}
|
}
|
||||||
if (i == 16) {
|
if (i == 16) {
|
||||||
processAttendances(table);
|
processAttendance(table);
|
||||||
}
|
}
|
||||||
if (i == 17) {
|
if (i == 17) {
|
||||||
processNotices(table);
|
processNotices(table);
|
||||||
@ -609,7 +609,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
|||||||
processEvents(table);
|
processEvents(table);
|
||||||
}
|
}
|
||||||
if (i == 23) {
|
if (i == 23) {
|
||||||
processHomeworks(table);
|
processHomework(table);
|
||||||
}
|
}
|
||||||
if (i == 24) {
|
if (i == 24) {
|
||||||
processTimetable(table);
|
processTimetable(table);
|
||||||
@ -794,7 +794,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
|||||||
switch (e.tagName()) {
|
switch (e.tagName()) {
|
||||||
case "div": {
|
case "div": {
|
||||||
//d(TAG, "Outer HTML "+e.outerHtml());
|
//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()) {
|
if (matcher.find()) {
|
||||||
subjectName = matcher.group(1);
|
subjectName = matcher.group(1);
|
||||||
}
|
}
|
||||||
@ -1051,20 +1051,20 @@ public class Mobidziennik implements OldEdziennikInterface {
|
|||||||
this.lessonId = lessonId;
|
this.lessonId = lessonId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private Date attendancesCheckDate = Week.getWeekStart();
|
private Date attendanceCheckDate = Week.getWeekStart();
|
||||||
private void getAttendances() {
|
private void getAttendance() {
|
||||||
r("finish", "Attendances");
|
r("finish", "Attendance");
|
||||||
// TODO: 2019-09-10 please download attendances from /dziennik/frekwencja. /mobile does not work above v13.0
|
// TODO: 2019-09-10 please download attendance from /dziennik/frekwencja. /mobile does not work above v13.0
|
||||||
if (true) {
|
if (true) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
callback.onActionStarted(R.string.sync_action_syncing_attendances);
|
callback.onActionStarted(R.string.sync_action_syncing_attendance);
|
||||||
d(TAG, "Get attendances for week "+attendancesCheckDate.getStringY_m_d());
|
d(TAG, "Get attendance for week "+ attendanceCheckDate.getStringY_m_d());
|
||||||
Request.builder()
|
Request.builder()
|
||||||
.url(fakeLogin ? "https://szkolny.eu/mobimobi/mobi_mod_frekwencja.php" : "https://" + loginServerName + ".mobidziennik.pl/mobile/frekwencja")
|
.url(fakeLogin ? "https://szkolny.eu/mobimobi/mobi_mod_frekwencja.php" : "https://" + loginServerName + ".mobidziennik.pl/mobile/frekwencja")
|
||||||
.userAgent(System.getProperty("http.agent"))
|
.userAgent(System.getProperty("http.agent"))
|
||||||
.addParameter("uczen", studentId)
|
.addParameter("uczen", studentId)
|
||||||
.addParameter("data_poniedzialek", attendancesCheckDate.getStringY_m_d())
|
.addParameter("data_poniedzialek", attendanceCheckDate.getStringY_m_d())
|
||||||
.post()
|
.post()
|
||||||
.callback(new TextCallbackHandler() {
|
.callback(new TextCallbackHandler() {
|
||||||
@Override
|
@Override
|
||||||
@ -1076,11 +1076,11 @@ public class Mobidziennik implements OldEdziennikInterface {
|
|||||||
public void onSuccess(String data, Response response) {
|
public void onSuccess(String data, Response response) {
|
||||||
// just skip any failures here
|
// just skip any failures here
|
||||||
if (data == null || data.equals("")) {
|
if (data == null || data.equals("")) {
|
||||||
r("finish", "Attendances");
|
r("finish", "Attendance");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (data.contains("nie-pamietam-hasla")) {
|
if (data.contains("nie-pamietam-hasla")) {
|
||||||
r("finish", "Attendances");
|
r("finish", "Attendance");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1135,7 +1135,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
|||||||
continue;
|
continue;
|
||||||
AttendanceLessonRange range = ranges.get(currentIndex);
|
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);
|
long addedDate = date.combineWith(range.startTime);
|
||||||
|
|
||||||
int markerIndex = 0;
|
int markerIndex = 0;
|
||||||
@ -1201,7 +1201,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
|||||||
markerIndex++;
|
markerIndex++;
|
||||||
attendanceList.add(attendanceObject);
|
attendanceList.add(attendanceObject);
|
||||||
if (attendanceObject.type != TYPE_PRESENT) {
|
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));
|
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) {
|
} catch (Exception e) {
|
||||||
Crashlytics.logException(e);
|
Crashlytics.logException(e);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
if (onlyFeature == FEATURE_ATTENDANCES)
|
if (onlyFeature == FEATURE_ATTENDANCE)
|
||||||
finishWithError(new AppError(TAG, 955, CODE_OTHER, response, e, data));
|
finishWithError(new AppError(TAG, 955, CODE_OTHER, response, e, data));
|
||||||
else
|
else
|
||||||
r("finish", "Attendances");
|
r("finish", "Attendance");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (onlyFeature == FEATURE_ATTENDANCES) {
|
if (onlyFeature == FEATURE_ATTENDANCE) {
|
||||||
// syncing attendances exclusively
|
// syncing attendance exclusively
|
||||||
if (attendancesLastSync == 0) {
|
if (attendanceLastSync == 0) {
|
||||||
// first sync - get attendances until it's start of the school year
|
// first sync - get attendance until it's start of the school year
|
||||||
attendancesLastSync = profile.getSemesterStart(1).getInMillis();
|
attendanceLastSync = profile.getSemesterStart(1).getInMillis();
|
||||||
}
|
}
|
||||||
Date lastSyncDate = Date.fromMillis(attendancesLastSync);
|
Date lastSyncDate = Date.fromMillis(attendanceLastSync);
|
||||||
lastSyncDate.stepForward(0, 0, -7);
|
lastSyncDate.stepForward(0, 0, -7);
|
||||||
if (lastSyncDate.getValue() < attendancesCheckDate.getValue()) {
|
if (lastSyncDate.getValue() < attendanceCheckDate.getValue()) {
|
||||||
attendancesCheckDate.stepForward(0, 0, -7);
|
attendanceCheckDate.stepForward(0, 0, -7);
|
||||||
r("get", "Attendances");
|
r("get", "Attendance");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
profile.putStudentData("attendancesLastSync", System.currentTimeMillis());
|
profile.putStudentData("attendanceLastSync", System.currentTimeMillis());
|
||||||
r("finish", "Attendances");
|
r("finish", "Attendance");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (attendancesLastSync != 0) {
|
if (attendanceLastSync != 0) {
|
||||||
// not a first sync
|
// not a first sync
|
||||||
Date lastSyncDate = Date.fromMillis(attendancesLastSync);
|
Date lastSyncDate = Date.fromMillis(attendanceLastSync);
|
||||||
lastSyncDate.stepForward(0, 0, 2);
|
lastSyncDate.stepForward(0, 0, 2);
|
||||||
if (lastSyncDate.getValue() >= attendancesCheckDate.getValue()) {
|
if (lastSyncDate.getValue() >= attendanceCheckDate.getValue()) {
|
||||||
profile.putStudentData("attendancesLastSync", System.currentTimeMillis());
|
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);
|
String[] user = userStr.split("\\|", Integer.MAX_VALUE);
|
||||||
|
|
||||||
teachersMap.put(strToInt(user[0]), user[5]+" "+user[4]);
|
teachersMap.put(strToInt(user[0]), user[5].trim()+" "+user[4].trim());
|
||||||
teacherList.add(new Teacher(profileId, strToInt(user[0]), user[4], user[5]));
|
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)
|
if (true)
|
||||||
return;
|
return;
|
||||||
String[] attendances = table.split("\n");
|
String[] attendanceList = table.split("\n");
|
||||||
for (String attendanceStr: attendances)
|
for (String attendanceStr: attendanceList)
|
||||||
{
|
{
|
||||||
if (attendanceStr.isEmpty()) {
|
if (attendanceStr.isEmpty()) {
|
||||||
continue;
|
continue;
|
||||||
@ -1718,7 +1718,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
|||||||
mobiLesson.date,
|
mobiLesson.date,
|
||||||
mobiLesson.startTime,
|
mobiLesson.startTime,
|
||||||
type);
|
type);
|
||||||
attendanceList.add(attendanceObject);
|
this.attendanceList.add(attendanceObject);
|
||||||
metadataList.add(new Metadata(profileId, Metadata.TYPE_ATTENDANCE, attendanceObject.id, profile.getEmpty(), profile.getEmpty(), System.currentTimeMillis()));
|
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();
|
Date today = Date.getToday();
|
||||||
for (String homeworkStr: homeworks)
|
for (String homeworkStr: homeworkList)
|
||||||
{
|
{
|
||||||
if (homeworkStr.isEmpty()) {
|
if (homeworkStr.isEmpty()) {
|
||||||
continue;
|
continue;
|
||||||
@ -1958,7 +1958,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
|||||||
for(int i = 0; i < teachersMap.size(); i++) {
|
for(int i = 0; i < teachersMap.size(); i++) {
|
||||||
int key = teachersMap.keyAt(i);
|
int key = teachersMap.keyAt(i);
|
||||||
String str = teachersMap.valueAt(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;
|
lessonObject.teacherId = key;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2001,7 +2001,7 @@ public class Mobidziennik implements OldEdziennikInterface {
|
|||||||
for(int i = 0; i < teachersMap.size(); i++) {
|
for(int i = 0; i < teachersMap.size(); i++) {
|
||||||
int key = teachersMap.keyAt(i);
|
int key = teachersMap.keyAt(i);
|
||||||
String str = teachersMap.valueAt(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;
|
lessonChange.teacherId = key;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package pl.szczodrzynski.edziennik.api;
|
package pl.szczodrzynski.edziennik.data.api;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
@ -35,57 +35,57 @@ import okhttp3.OkHttpClient;
|
|||||||
import okio.Buffer;
|
import okio.Buffer;
|
||||||
import pl.szczodrzynski.edziennik.App;
|
import pl.szczodrzynski.edziennik.App;
|
||||||
import pl.szczodrzynski.edziennik.R;
|
import pl.szczodrzynski.edziennik.R;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.AttachmentGetCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.AttachmentGetCallback;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.OldEdziennikInterface;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikInterface;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.LoginCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.LoginCallback;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.MessageGetCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.MessageGetCallback;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.RecipientListGetCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.RecipientListGetCallback;
|
||||||
import pl.szczodrzynski.edziennik.api.interfaces.SyncCallback;
|
import pl.szczodrzynski.edziennik.data.api.interfaces.SyncCallback;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Attendance;
|
import pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Event;
|
import pl.szczodrzynski.edziennik.data.db.modules.events.Event;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Grade;
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.Grade;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.GradeCategory;
|
import pl.szczodrzynski.edziennik.data.db.modules.grades.GradeCategory;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Lesson;
|
import pl.szczodrzynski.edziennik.data.db.modules.lessons.Lesson;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LessonChange;
|
import pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore;
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Message;
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.Message;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.MessageFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.MessageRecipient;
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipient;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.MessageRecipientFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageRecipientFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Metadata;
|
import pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Notice;
|
import pl.szczodrzynski.edziennik.data.db.modules.notices.Notice;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Profile;
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Subject;
|
import pl.szczodrzynski.edziennik.data.db.modules.subjects.Subject;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Teacher;
|
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Team;
|
import pl.szczodrzynski.edziennik.data.db.modules.teams.Team;
|
||||||
import pl.szczodrzynski.edziennik.messages.MessagesComposeInfo;
|
import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesComposeInfo;
|
||||||
import pl.szczodrzynski.edziennik.models.Date;
|
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||||
import pl.szczodrzynski.edziennik.models.Endpoint;
|
import pl.szczodrzynski.edziennik.utils.models.Endpoint;
|
||||||
import pl.szczodrzynski.edziennik.models.Time;
|
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||||
import pl.szczodrzynski.edziennik.models.Week;
|
import pl.szczodrzynski.edziennik.utils.models.Week;
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils;
|
import pl.szczodrzynski.edziennik.utils.Utils;
|
||||||
|
|
||||||
import static pl.szczodrzynski.edziennik.api.AppError.CODE_OTHER;
|
import static pl.szczodrzynski.edziennik.data.api.AppError.CODE_OTHER;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_ABSENT_EXCUSED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_ABSENT_EXCUSED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_BELATED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_BELATED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_BELATED_EXCUSED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_BELATED_EXCUSED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_PRESENT;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_PRESENT;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_RELEASED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.attendance.Attendance.TYPE_RELEASED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_EXAM;
|
import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_EXAM;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Event.TYPE_SHORT_QUIZ;
|
import static pl.szczodrzynski.edziennik.data.db.modules.events.Event.TYPE_SHORT_QUIZ;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_FINAL;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_FINAL;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER1_PROPOSED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER1_PROPOSED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_FINAL;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_FINAL;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Grade.TYPE_SEMESTER2_PROPOSED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.grades.Grade.TYPE_SEMESTER2_PROPOSED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CANCELLED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CANCELLED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CHANGE;
|
import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CHANGE;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.LoginStore.LOGIN_TYPE_VULCAN;
|
import static pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore.LOGIN_TYPE_VULCAN;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_RECEIVED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_RECEIVED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Message.TYPE_SENT;
|
import static pl.szczodrzynski.edziennik.data.db.modules.messages.Message.TYPE_SENT;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_MESSAGE;
|
import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_MESSAGE;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Notice.TYPE_NEUTRAL;
|
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.c;
|
||||||
import static pl.szczodrzynski.edziennik.utils.Utils.crc16;
|
import static pl.szczodrzynski.edziennik.utils.Utils.crc16;
|
||||||
import static pl.szczodrzynski.edziennik.utils.Utils.d;
|
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.getVulcanGradeColor;
|
||||||
import static pl.szczodrzynski.edziennik.utils.Utils.intToStr;
|
import static pl.szczodrzynski.edziennik.utils.Utils.intToStr;
|
||||||
|
|
||||||
public class Vulcan implements OldEdziennikInterface {
|
public class Vulcan implements EdziennikInterface {
|
||||||
public Vulcan(App app) {
|
public Vulcan(App app) {
|
||||||
this.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 = "mobile-api/Uczen.v3.Uczen/Oceny";
|
||||||
private static final String ENDPOINT_GRADES_PROPOSITIONS = "mobile-api/Uczen.v3.Uczen/OcenyPodsumowanie";
|
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_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_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_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_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 ENDPOINT_PUSH = "mobile-api/Uczen.v3.Uczen/UstawPushToken";
|
||||||
private static final String userAgent = "MobileUserAgent";
|
private static final String userAgent = "MobileUserAgent";
|
||||||
|
|
||||||
@ -258,9 +259,9 @@ public class Vulcan implements OldEdziennikInterface {
|
|||||||
targetEndpoints.add("Grades");
|
targetEndpoints.add("Grades");
|
||||||
targetEndpoints.add("ProposedGrades");
|
targetEndpoints.add("ProposedGrades");
|
||||||
targetEndpoints.add("Events");
|
targetEndpoints.add("Events");
|
||||||
targetEndpoints.add("Homeworks");
|
targetEndpoints.add("Homework");
|
||||||
targetEndpoints.add("Notices");
|
targetEndpoints.add("Notices");
|
||||||
targetEndpoints.add("Attendances");
|
targetEndpoints.add("Attendance");
|
||||||
targetEndpoints.add("MessagesInbox");
|
targetEndpoints.add("MessagesInbox");
|
||||||
targetEndpoints.add("MessagesOutbox");
|
targetEndpoints.add("MessagesOutbox");
|
||||||
targetEndpoints.add("Finish");
|
targetEndpoints.add("Finish");
|
||||||
@ -296,14 +297,14 @@ public class Vulcan implements OldEdziennikInterface {
|
|||||||
targetEndpoints.add("Grades");
|
targetEndpoints.add("Grades");
|
||||||
targetEndpoints.add("ProposedGrades");
|
targetEndpoints.add("ProposedGrades");
|
||||||
break;
|
break;
|
||||||
case FEATURE_HOMEWORKS:
|
case FEATURE_HOMEWORK:
|
||||||
targetEndpoints.add("Homeworks");
|
targetEndpoints.add("Homework");
|
||||||
break;
|
break;
|
||||||
case FEATURE_NOTICES:
|
case FEATURE_NOTICES:
|
||||||
targetEndpoints.add("Notices");
|
targetEndpoints.add("Notices");
|
||||||
break;
|
break;
|
||||||
case FEATURE_ATTENDANCES:
|
case FEATURE_ATTENDANCE:
|
||||||
targetEndpoints.add("Attendances");
|
targetEndpoints.add("Attendance");
|
||||||
break;
|
break;
|
||||||
case FEATURE_MESSAGES_INBOX:
|
case FEATURE_MESSAGES_INBOX:
|
||||||
targetEndpoints.add("MessagesInbox");
|
targetEndpoints.add("MessagesInbox");
|
||||||
@ -379,14 +380,14 @@ public class Vulcan implements OldEdziennikInterface {
|
|||||||
case "Events":
|
case "Events":
|
||||||
getEvents();
|
getEvents();
|
||||||
break;
|
break;
|
||||||
case "Homeworks":
|
case "Homework":
|
||||||
getHomeworks();
|
getHomework();
|
||||||
break;
|
break;
|
||||||
case "Notices":
|
case "Notices":
|
||||||
getNotices();
|
getNotices();
|
||||||
break;
|
break;
|
||||||
case "Attendances":
|
case "Attendance":
|
||||||
getAttendances();
|
getAttendance();
|
||||||
break;
|
break;
|
||||||
case "MessagesInbox":
|
case "MessagesInbox":
|
||||||
getMessagesInbox();
|
getMessagesInbox();
|
||||||
@ -427,8 +428,10 @@ public class Vulcan implements OldEdziennikInterface {
|
|||||||
app.db.noticeDao().clearForSemester(profileId, studentSemesterNumber);
|
app.db.noticeDao().clearForSemester(profileId, studentSemesterNumber);
|
||||||
app.db.noticeDao().addAll(noticeList);
|
app.db.noticeDao().addAll(noticeList);
|
||||||
}
|
}
|
||||||
if (attendanceList.size() > 0)
|
if (attendanceList.size() > 0) {
|
||||||
|
app.db.attendanceDao().clearAfterDate(profileId, getCurrentSemesterStartDate());
|
||||||
app.db.attendanceDao().addAll(attendanceList);
|
app.db.attendanceDao().addAll(attendanceList);
|
||||||
|
}
|
||||||
if (messageList.size() > 0)
|
if (messageList.size() > 0)
|
||||||
app.db.messageDao().addAllIgnore(messageList);
|
app.db.messageDao().addAllIgnore(messageList);
|
||||||
if (messageRecipientList.size() > 0)
|
if (messageRecipientList.size() > 0)
|
||||||
@ -742,7 +745,7 @@ public class Vulcan implements OldEdziennikInterface {
|
|||||||
studentLoginId = account.get("UzytkownikLoginId").getAsInt();
|
studentLoginId = account.get("UzytkownikLoginId").getAsInt();
|
||||||
studentClassId = account.get("IdOddzial").getAsInt();
|
studentClassId = account.get("IdOddzial").getAsInt();
|
||||||
studentSemesterId = account.get("IdOkresKlasyfikacyjny").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("userName", account.get("UzytkownikNazwa").getAsString());
|
||||||
targetProfile.putStudentData("schoolName", schoolName);
|
targetProfile.putStudentData("schoolName", schoolName);
|
||||||
targetProfile.putStudentData("schoolSymbol", schoolSymbol);
|
targetProfile.putStudentData("schoolSymbol", schoolSymbol);
|
||||||
@ -1149,7 +1152,7 @@ public class Vulcan implements OldEdziennikInterface {
|
|||||||
int subjectId = grade.get("IdPrzedmiot").getAsInt();
|
int subjectId = grade.get("IdPrzedmiot").getAsInt();
|
||||||
int teacherId = grade.get("IdPracownikD").getAsInt();
|
int teacherId = grade.get("IdPracownikD").getAsInt();
|
||||||
int categoryId = grade.get("IdKategoria").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;
|
float finalValue = 0.0f;
|
||||||
String finalName;
|
String finalName;
|
||||||
@ -1240,9 +1243,9 @@ public class Vulcan implements OldEdziennikInterface {
|
|||||||
Grade gradeObject = new Grade(
|
Grade gradeObject = new Grade(
|
||||||
profileId,
|
profileId,
|
||||||
id,
|
id,
|
||||||
finalDescription,
|
|
||||||
color,
|
|
||||||
category,
|
category,
|
||||||
|
color,
|
||||||
|
finalDescription,
|
||||||
finalName,
|
finalName,
|
||||||
finalValue,
|
finalValue,
|
||||||
weight,
|
weight,
|
||||||
@ -1371,7 +1374,7 @@ public class Vulcan implements OldEdziennikInterface {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getHomeworks() {
|
private void getHomework() {
|
||||||
callback.onActionStarted(R.string.sync_action_syncing_homework);
|
callback.onActionStarted(R.string.sync_action_syncing_homework);
|
||||||
JsonObject json = new JsonObject();
|
JsonObject json = new JsonObject();
|
||||||
json.addProperty("DataPoczatkowa", profile.getEmpty() ? getCurrentSemesterStartDate().getStringY_m_d() : oneMonthBack.getStringY_m_d());
|
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("IdOddzial", studentClassId);
|
||||||
json.addProperty("IdUczen", studentId);
|
json.addProperty("IdUczen", studentId);
|
||||||
json.addProperty("IdOkresKlasyfikacyjny", studentSemesterId);
|
json.addProperty("IdOkresKlasyfikacyjny", studentSemesterId);
|
||||||
apiRequest(schoolSymbol+"/"+ENDPOINT_HOMEWORKS, json, result -> {
|
apiRequest(schoolSymbol+"/"+ ENDPOINT_HOMEWORK, json, result -> {
|
||||||
JsonArray homeworks = result.getAsJsonArray("Data");
|
JsonArray homeworkList = result.getAsJsonArray("Data");
|
||||||
|
|
||||||
for (JsonElement homeworkEl: homeworks) {
|
for (JsonElement homeworkEl: homeworkList) {
|
||||||
JsonObject homework = homeworkEl.getAsJsonObject();
|
JsonObject homework = homeworkEl.getAsJsonObject();
|
||||||
|
|
||||||
int id = homework.get("Id").getAsInt();
|
int id = homework.get("Id").getAsInt();
|
||||||
@ -1416,7 +1419,7 @@ public class Vulcan implements OldEdziennikInterface {
|
|||||||
eventList.add(eventObject);
|
eventList.add(eventObject);
|
||||||
metadataList.add(new Metadata(profileId, Metadata.TYPE_HOMEWORK, eventObject.id, profile.getEmpty(), profile.getEmpty(), System.currentTimeMillis()));
|
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() {
|
private void getAttendance() {
|
||||||
callback.onActionStarted(R.string.sync_action_syncing_attendances);
|
callback.onActionStarted(R.string.sync_action_syncing_attendance);
|
||||||
JsonObject json = new JsonObject();
|
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("DataKoncowa", getCurrentSemesterEndDate().getStringY_m_d());
|
||||||
json.addProperty("IdOddzial", studentClassId);
|
json.addProperty("IdOddzial", studentClassId);
|
||||||
json.addProperty("IdUczen", studentId);
|
json.addProperty("IdUczen", studentId);
|
||||||
json.addProperty("IdOkresKlasyfikacyjny", studentSemesterId);
|
json.addProperty("IdOkresKlasyfikacyjny", studentSemesterId);
|
||||||
apiRequest(schoolSymbol+"/"+ENDPOINT_ATTENDANCES, json, result -> {
|
apiRequest(schoolSymbol+"/"+ ENDPOINT_ATTENDANCE, json, result -> {
|
||||||
JsonArray attendances = result.getAsJsonObject("Data").getAsJsonArray("Frekwencje");
|
JsonArray attendanceList = result.getAsJsonObject("Data").getAsJsonArray("Frekwencje");
|
||||||
|
|
||||||
for (JsonElement attendanceEl: attendances) {
|
for (JsonElement attendanceEl: attendanceList) {
|
||||||
JsonObject attendance = attendanceEl.getAsJsonObject();
|
JsonObject attendance = attendanceEl.getAsJsonObject();
|
||||||
|
|
||||||
Pair<Integer, String> attendanceCategory = attendanceCategories.get(attendance.get("IdKategoria").getAsInt());
|
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,
|
lessonRanges.get(attendance.get("IdPoraLekcji").getAsInt()).first,
|
||||||
type);
|
type);
|
||||||
|
|
||||||
attendanceList.add(attendanceObject);
|
this.attendanceList.add(attendanceObject);
|
||||||
if (attendanceObject.type != TYPE_PRESENT) {
|
if (attendanceObject.type != TYPE_PRESENT) {
|
||||||
metadataList.add(new Metadata(profileId, Metadata.TYPE_ATTENDANCE, attendanceObject.id, profile.getEmpty(), profile.getEmpty(), attendanceObject.lessonDate.combineWith(attendanceObject.startTime)));
|
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() {
|
private void getMessagesInbox() {
|
||||||
callback.onActionStarted(R.string.sync_action_syncing_messages_inbox);
|
callback.onActionStarted(R.string.sync_action_syncing_messages_inbox);
|
||||||
JsonObject json = new JsonObject();
|
JsonObject json = new JsonObject();
|
||||||
json.addProperty("DataPoczatkowa", profile.getEmpty() ? getCurrentSemesterStartDate().getInUnix() : oneMonthBack.getInUnix());
|
json.addProperty("DataPoczatkowa", true ? getCurrentSemesterStartDate().getInUnix() : oneMonthBack.getInUnix());
|
||||||
json.addProperty("DataKoncowa", Date.getToday().getInUnix());
|
json.addProperty("DataKoncowa", getCurrentSemesterEndDate().getInUnix());
|
||||||
json.addProperty("LoginId", studentLoginId);
|
json.addProperty("LoginId", studentLoginId);
|
||||||
json.addProperty("IdUczen", studentId);
|
json.addProperty("IdUczen", studentId);
|
||||||
apiRequest(schoolSymbol+"/"+ENDPOINT_MESSAGES_RECEIVED, json, result -> {
|
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);
|
callback.onActionStarted(R.string.sync_action_syncing_messages_outbox);
|
||||||
JsonObject json = new JsonObject();
|
JsonObject json = new JsonObject();
|
||||||
json.addProperty("DataPoczatkowa", profile.getEmpty() ? getCurrentSemesterStartDate().getInUnix() : oneMonthBack.getInUnix());
|
json.addProperty("DataPoczatkowa", true ? getCurrentSemesterStartDate().getInUnix() : oneMonthBack.getInUnix());
|
||||||
json.addProperty("DataKoncowa", Date.getToday().getInUnix());
|
json.addProperty("DataKoncowa", getCurrentSemesterEndDate().getInUnix());
|
||||||
json.addProperty("LoginId", studentLoginId);
|
json.addProperty("LoginId", studentLoginId);
|
||||||
json.addProperty("IdUczen", studentId);
|
json.addProperty("IdUczen", studentId);
|
||||||
apiRequest(schoolSymbol+"/"+ENDPOINT_MESSAGES_SENT, json, result -> {
|
apiRequest(schoolSymbol+"/"+ENDPOINT_MESSAGES_SENT, json, result -> {
|
||||||
@ -1632,6 +1635,15 @@ public class Vulcan implements OldEdziennikInterface {
|
|||||||
recipient.fullName = profile.getStudentNameLong();
|
recipient.fullName = profile.getStudentNameLong();
|
||||||
}
|
}
|
||||||
if (!message.seen) {
|
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);
|
app.db.metadataDao().setSeen(profile.getId(), message, true);
|
||||||
if (message.type != TYPE_SENT) {
|
if (message.type != TYPE_SENT) {
|
||||||
app.db.messageRecipientDao().add(new MessageRecipient(profile.getId(), -1, -1, System.currentTimeMillis(), message.id));
|
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;
|
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 android.content.Context;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
@ -6,15 +6,15 @@ import androidx.annotation.Nullable;
|
|||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore;
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Message;
|
import pl.szczodrzynski.edziennik.data.db.modules.messages.MessageFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.MessageFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Profile;
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull;
|
import pl.szczodrzynski.edziennik.data.db.modules.teachers.Teacher;
|
||||||
import pl.szczodrzynski.edziennik.messages.MessagesComposeInfo;
|
import pl.szczodrzynski.edziennik.ui.modules.messages.MessagesComposeInfo;
|
||||||
import pl.szczodrzynski.edziennik.models.Endpoint;
|
import pl.szczodrzynski.edziennik.utils.models.Endpoint;
|
||||||
|
|
||||||
public interface OldEdziennikInterface {
|
public interface EdziennikInterface {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sync all Edziennik data.
|
* Sync all Edziennik data.
|
||||||
@ -34,9 +34,9 @@ public interface OldEdziennikInterface {
|
|||||||
int FEATURE_TIMETABLE = 1;
|
int FEATURE_TIMETABLE = 1;
|
||||||
int FEATURE_AGENDA = 2;
|
int FEATURE_AGENDA = 2;
|
||||||
int FEATURE_GRADES = 3;
|
int FEATURE_GRADES = 3;
|
||||||
int FEATURE_HOMEWORKS = 4;
|
int FEATURE_HOMEWORK = 4;
|
||||||
int FEATURE_NOTICES = 5;
|
int FEATURE_NOTICES = 5;
|
||||||
int FEATURE_ATTENDANCES = 6;
|
int FEATURE_ATTENDANCE = 6;
|
||||||
int FEATURE_MESSAGES_INBOX = 7;
|
int FEATURE_MESSAGES_INBOX = 7;
|
||||||
int FEATURE_MESSAGES_OUTBOX = 8;
|
int FEATURE_MESSAGES_OUTBOX = 8;
|
||||||
int FEATURE_ANNOUNCEMENTS = 9;
|
int FEATURE_ANNOUNCEMENTS = 9;
|
||||||
@ -60,7 +60,7 @@ public interface OldEdziennikInterface {
|
|||||||
*
|
*
|
||||||
* Updates a database-saved {@code teacherList} with {@code loginId}s.
|
* 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.
|
* 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 android.content.Context;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.api.AppError;
|
import pl.szczodrzynski.edziennik.data.api.AppError;
|
||||||
|
|
||||||
public interface ErrorCallback {
|
public interface ErrorCallback {
|
||||||
void onError(Context activityContext, @NonNull AppError error);
|
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 {
|
public interface LoginCallback {
|
||||||
void onSuccess();
|
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.data.db.modules.messages.MessageFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.MessageFull;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Callback containing a {@link MessageFull} which already has its {@code body} and {@code recipients}.
|
* 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;
|
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 android.content.Context;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import androidx.annotation.StringRes;
|
import pl.szczodrzynski.edziennik.data.db.modules.login.LoginStore;
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.Profile;
|
||||||
import pl.szczodrzynski.edziennik.api.AppError;
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull;
|
||||||
import pl.szczodrzynski.edziennik.datamodels.LoginStore;
|
|
||||||
import pl.szczodrzynski.edziennik.datamodels.Profile;
|
|
||||||
import pl.szczodrzynski.edziennik.datamodels.ProfileFull;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A callback used for error reporting, progress information.
|
* 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.sqlite.db.SupportSQLiteDatabase;
|
||||||
import androidx.room.Database;
|
import androidx.room.Database;
|
||||||
import androidx.room.Room;
|
import androidx.room.Room;
|
||||||
import androidx.room.RoomDatabase;
|
import androidx.room.RoomDatabase;
|
||||||
import androidx.room.TypeConverters;
|
import androidx.room.TypeConverters;
|
||||||
import androidx.room.migration.Migration;
|
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;
|
import android.content.Context;
|
||||||
|
|
||||||
@ -14,6 +63,7 @@ import android.content.Context;
|
|||||||
Grade.class,
|
Grade.class,
|
||||||
//GradeCategory.class,
|
//GradeCategory.class,
|
||||||
Teacher.class,
|
Teacher.class,
|
||||||
|
TeacherAbsence.class,
|
||||||
Subject.class,
|
Subject.class,
|
||||||
Notice.class,
|
Notice.class,
|
||||||
Lesson.class,
|
Lesson.class,
|
||||||
@ -31,7 +81,7 @@ import android.content.Context;
|
|||||||
Message.class,
|
Message.class,
|
||||||
MessageRecipient.class,
|
MessageRecipient.class,
|
||||||
DebugLog.class,
|
DebugLog.class,
|
||||||
Metadata.class}, version = 52)
|
Metadata.class}, version = 54)
|
||||||
@TypeConverters({
|
@TypeConverters({
|
||||||
ConverterTime.class,
|
ConverterTime.class,
|
||||||
ConverterDate.class,
|
ConverterDate.class,
|
||||||
@ -43,6 +93,7 @@ public abstract class AppDb extends RoomDatabase {
|
|||||||
public abstract GradeDao gradeDao();
|
public abstract GradeDao gradeDao();
|
||||||
//public abstract GradeCategoryDao gradeCategoryDao();
|
//public abstract GradeCategoryDao gradeCategoryDao();
|
||||||
public abstract TeacherDao teacherDao();
|
public abstract TeacherDao teacherDao();
|
||||||
|
public abstract TeacherAbsenceDao teacherAbsenceDao();
|
||||||
public abstract SubjectDao subjectDao();
|
public abstract SubjectDao subjectDao();
|
||||||
public abstract NoticeDao noticeDao();
|
public abstract NoticeDao noticeDao();
|
||||||
public abstract LessonDao lessonDao();
|
public abstract LessonDao lessonDao();
|
||||||
@ -486,6 +537,27 @@ public abstract class AppDb extends RoomDatabase {
|
|||||||
database.execSQL("ALTER TABLE teachers ADD teacherTypeDescription TEXT DEFAULT NULL");
|
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) {
|
public static AppDb getDatabase(final Context context) {
|
||||||
@ -535,7 +607,10 @@ public abstract class AppDb extends RoomDatabase {
|
|||||||
MIGRATION_48_49,
|
MIGRATION_48_49,
|
||||||
MIGRATION_49_50,
|
MIGRATION_49_50,
|
||||||
MIGRATION_50_51,
|
MIGRATION_50_51,
|
||||||
MIGRATION_51_52)
|
MIGRATION_51_52,
|
||||||
|
MIGRATION_52_53,
|
||||||
|
MIGRATION_53_54
|
||||||
|
)
|
||||||
.allowMainThreadQueries()
|
.allowMainThreadQueries()
|
||||||
//.fallbackToDestructiveMigration()
|
//.fallbackToDestructiveMigration()
|
||||||
.build();
|
.build();
|
@ -1,8 +1,8 @@
|
|||||||
package pl.szczodrzynski.edziennik.datamodels;
|
package pl.szczodrzynski.edziennik.data.db.converters;
|
||||||
|
|
||||||
import androidx.room.TypeConverter;
|
import androidx.room.TypeConverter;
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.models.Date;
|
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||||
|
|
||||||
public class ConverterDate {
|
public class ConverterDate {
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package pl.szczodrzynski.edziennik.datamodels;
|
package pl.szczodrzynski.edziennik.data.db.converters;
|
||||||
|
|
||||||
import androidx.room.TypeConverter;
|
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.Gson;
|
||||||
import com.google.gson.reflect.TypeToken;
|
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.Gson;
|
||||||
import com.google.gson.reflect.TypeToken;
|
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 androidx.room.TypeConverter;
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.models.Time;
|
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||||
|
|
||||||
public class ConverterTime {
|
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.annotation.Nullable;
|
||||||
import androidx.room.ColumnInfo;
|
import androidx.room.ColumnInfo;
|
||||||
import androidx.room.Entity;
|
import androidx.room.Entity;
|
||||||
import androidx.room.Ignore;
|
import androidx.room.Ignore;
|
||||||
import androidx.room.Index;
|
import androidx.room.Index;
|
||||||
import pl.szczodrzynski.edziennik.models.Date;
|
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||||
|
|
||||||
@Entity(tableName = "announcements",
|
@Entity(tableName = "announcements",
|
||||||
primaryKeys = {"profileId", "announcementId"},
|
primaryKeys = {"profileId", "announcementId"},
|
@ -1,4 +1,4 @@
|
|||||||
package pl.szczodrzynski.edziennik.datamodels;
|
package pl.szczodrzynski.edziennik.data.db.modules.announcements;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -11,7 +11,9 @@ import androidx.room.RawQuery;
|
|||||||
import androidx.sqlite.db.SimpleSQLiteQuery;
|
import androidx.sqlite.db.SimpleSQLiteQuery;
|
||||||
import androidx.sqlite.db.SupportSQLiteQuery;
|
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
|
@Dao
|
||||||
public abstract class AnnouncementDao {
|
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 class AnnouncementFull extends Announcement {
|
||||||
public String teacherFullName = "";
|
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.annotation.NonNull;
|
||||||
import androidx.room.ColumnInfo;
|
import androidx.room.ColumnInfo;
|
||||||
@ -6,8 +6,8 @@ import androidx.room.Entity;
|
|||||||
import androidx.room.Ignore;
|
import androidx.room.Ignore;
|
||||||
import androidx.room.Index;
|
import androidx.room.Index;
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.models.Date;
|
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||||
import pl.szczodrzynski.edziennik.models.Time;
|
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||||
|
|
||||||
@Entity(tableName = "attendances",
|
@Entity(tableName = "attendances",
|
||||||
primaryKeys = {"profileId", "attendanceId", "attendanceLessonDate", "attendanceStartTime"},
|
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.lifecycle.LiveData;
|
||||||
import androidx.sqlite.db.SimpleSQLiteQuery;
|
import androidx.sqlite.db.SimpleSQLiteQuery;
|
||||||
@ -8,12 +8,11 @@ import androidx.room.Insert;
|
|||||||
import androidx.room.OnConflictStrategy;
|
import androidx.room.OnConflictStrategy;
|
||||||
import androidx.room.Query;
|
import androidx.room.Query;
|
||||||
import androidx.room.RawQuery;
|
import androidx.room.RawQuery;
|
||||||
import pl.szczodrzynski.edziennik.models.Date;
|
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Attendance.TYPE_PRESENT;
|
import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_ATTENDANCE;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_ATTENDANCE;
|
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
public abstract class AttendanceDao {
|
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 class AttendanceFull extends Attendance {
|
||||||
public String teacherFullName = "";
|
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.Entity;
|
||||||
import androidx.room.Index;
|
|
||||||
import androidx.room.PrimaryKey;
|
import androidx.room.PrimaryKey;
|
||||||
|
|
||||||
import static pl.szczodrzynski.edziennik.utils.Utils.d;
|
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.Dao;
|
||||||
import androidx.room.Insert;
|
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.ColumnInfo;
|
||||||
import androidx.room.Entity;
|
import androidx.room.Entity;
|
||||||
import androidx.room.Ignore;
|
import androidx.room.Ignore;
|
||||||
import androidx.room.Index;
|
import androidx.room.Index;
|
||||||
import pl.szczodrzynski.edziennik.models.Date;
|
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||||
import pl.szczodrzynski.edziennik.models.Time;
|
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||||
|
|
||||||
@Entity(tableName = "events",
|
@Entity(tableName = "events",
|
||||||
primaryKeys = {"profileId", "eventId"},
|
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.lifecycle.LiveData;
|
||||||
import androidx.sqlite.db.SimpleSQLiteQuery;
|
import androidx.sqlite.db.SimpleSQLiteQuery;
|
||||||
@ -14,12 +14,12 @@ import android.util.Log;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.models.Date;
|
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||||
import pl.szczodrzynski.edziennik.models.Time;
|
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||||
|
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_EVENT;
|
import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_EVENT;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_HOMEWORK;
|
import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_HOMEWORK;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.Metadata.TYPE_LESSON_CHANGE;
|
import static pl.szczodrzynski.edziennik.data.db.modules.metadata.Metadata.TYPE_LESSON_CHANGE;
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
public abstract class EventDao {
|
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 class EventFull extends Event {
|
||||||
public String typeName = "";
|
public String typeName = "";
|
@ -1,4 +1,4 @@
|
|||||||
package pl.szczodrzynski.edziennik.datamodels;
|
package pl.szczodrzynski.edziennik.data.db.modules.events;
|
||||||
|
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
|
|
||||||
@ -28,4 +28,4 @@ public class EventType {
|
|||||||
public EventType(int profileId, int id, String name, String color) {
|
public EventType(int profileId, int id, String name, String color) {
|
||||||
this(profileId, id, name, Color.parseColor(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;
|
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.Entity;
|
||||||
import androidx.room.Ignore;
|
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;
|
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 class FeedbackMessageWithCount extends FeedbackMessage {
|
||||||
public int messageCount = 0;
|
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.ColumnInfo;
|
||||||
import androidx.room.Entity;
|
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.ArrayList;
|
||||||
import java.util.List;
|
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;
|
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.lifecycle.LiveData;
|
||||||
import androidx.sqlite.db.SimpleSQLiteQuery;
|
import androidx.sqlite.db.SimpleSQLiteQuery;
|
||||||
@ -14,7 +14,7 @@ import android.util.SparseIntArray;
|
|||||||
|
|
||||||
import java.util.List;
|
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
|
@Dao
|
||||||
public abstract class GradeDao {
|
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 class GradeFull extends Grade {
|
||||||
//public String category = "";
|
//public String category = "";
|
@ -1,4 +1,4 @@
|
|||||||
package pl.szczodrzynski.edziennik.datamodels;
|
package pl.szczodrzynski.edziennik.data.db.modules.lessons;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -8,8 +8,8 @@ import androidx.room.Ignore;
|
|||||||
import androidx.room.Index;
|
import androidx.room.Index;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.models.Time;
|
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||||
import pl.szczodrzynski.edziennik.models.Week;
|
import pl.szczodrzynski.edziennik.utils.models.Week;
|
||||||
|
|
||||||
@Entity(tableName = "lessons",
|
@Entity(tableName = "lessons",
|
||||||
primaryKeys = {"profileId", "lessonWeekDay", "lessonStartTime", "lessonEndTime"},
|
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.ColumnInfo;
|
||||||
import androidx.room.Entity;
|
import androidx.room.Entity;
|
||||||
@ -7,8 +7,8 @@ import androidx.annotation.NonNull;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.models.Date;
|
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||||
import pl.szczodrzynski.edziennik.models.Time;
|
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||||
|
|
||||||
@Entity(tableName = "lessonChanges",
|
@Entity(tableName = "lessonChanges",
|
||||||
primaryKeys = {"profileId", "lessonChangeDate", "lessonChangeStartTime", "lessonChangeEndTime"},
|
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.lifecycle.LiveData;
|
||||||
import androidx.sqlite.db.SimpleSQLiteQuery;
|
import androidx.sqlite.db.SimpleSQLiteQuery;
|
||||||
@ -11,10 +11,10 @@ import androidx.room.RawQuery;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.models.Date;
|
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||||
import pl.szczodrzynski.edziennik.models.db.LessonChangeCounter;
|
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;
|
import static pl.szczodrzynski.edziennik.utils.Utils.d;
|
||||||
|
|
||||||
@Dao
|
@Dao
|
@ -1,4 +1,4 @@
|
|||||||
package pl.szczodrzynski.edziennik.datamodels;
|
package pl.szczodrzynski.edziennik.data.db.modules.lessons;
|
||||||
|
|
||||||
public class LessonChangeFull extends LessonChange {
|
public class LessonChangeFull extends LessonChange {
|
||||||
/*public String changeTeacherFullName = "";
|
/*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.lifecycle.LiveData;
|
||||||
import androidx.sqlite.db.SimpleSQLiteQuery;
|
import androidx.sqlite.db.SimpleSQLiteQuery;
|
||||||
@ -9,12 +9,11 @@ import androidx.room.OnConflictStrategy;
|
|||||||
import androidx.room.Query;
|
import androidx.room.Query;
|
||||||
import androidx.room.RawQuery;
|
import androidx.room.RawQuery;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.models.Date;
|
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||||
import pl.szczodrzynski.edziennik.models.Time;
|
import pl.szczodrzynski.edziennik.utils.models.Time;
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
public abstract class LessonDao {
|
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 androidx.room.ColumnInfo;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.R;
|
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.data.db.modules.lessons.LessonChange.TYPE_ADDED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CANCELLED;
|
import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CANCELLED;
|
||||||
import static pl.szczodrzynski.edziennik.datamodels.LessonChange.TYPE_CHANGE;
|
import static pl.szczodrzynski.edziennik.data.db.modules.lessons.LessonChange.TYPE_CHANGE;
|
||||||
import static pl.szczodrzynski.edziennik.utils.Utils.bs;
|
import static pl.szczodrzynski.edziennik.utils.Utils.bs;
|
||||||
|
|
||||||
public class LessonFull extends Lesson {
|
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 android.os.Bundle;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.room.ColumnInfo;
|
import androidx.room.ColumnInfo;
|
||||||
import androidx.room.Entity;
|
import androidx.room.Entity;
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.room.Ignore;
|
import androidx.room.Ignore;
|
||||||
|
|
||||||
import com.google.gson.JsonElement;
|
import com.google.gson.JsonElement;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull;
|
||||||
|
|
||||||
@Entity(tableName = "loginStores",
|
@Entity(tableName = "loginStores",
|
||||||
primaryKeys = {"loginStoreId"})
|
primaryKeys = {"loginStoreId"})
|
||||||
public class LoginStore {
|
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.lifecycle.LiveData;
|
||||||
import androidx.room.Dao;
|
import androidx.room.Dao;
|
||||||
@ -8,6 +8,8 @@ import androidx.room.Query;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.profiles.ProfileFull;
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
public abstract class LoginStoreDao {
|
public abstract class LoginStoreDao {
|
||||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
@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.ColumnInfo;
|
||||||
import androidx.room.Entity;
|
import androidx.room.Entity;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.models.Date;
|
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||||
|
|
||||||
@Entity(tableName = "luckyNumbers",
|
@Entity(tableName = "luckyNumbers",
|
||||||
primaryKeys = {"profileId", "luckyNumberDate"})
|
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.lifecycle.LiveData;
|
||||||
import androidx.room.Dao;
|
import androidx.room.Dao;
|
||||||
@ -8,7 +8,7 @@ import androidx.room.Query;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.models.Date;
|
import pl.szczodrzynski.edziennik.utils.models.Date;
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
public interface LuckyNumberDao {
|
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.ArrayList;
|
||||||
import java.util.List;
|
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