Skip to content

Commit

Permalink
rip studiportal app?
Browse files Browse the repository at this point in the history
  • Loading branch information
Lemkinator committed Feb 24, 2024
1 parent c211c1c commit 2d539c0
Show file tree
Hide file tree
Showing 21 changed files with 402 additions and 46 deletions.
8 changes: 2 additions & 6 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ android {
applicationId = "de.lemke.studiportal"
minSdk = 26
targetSdk = 34
versionCode = 17
versionName = "1.3.3"
versionCode = 18
versionName = "1.3.4"

kapt {
arguments {
Expand Down Expand Up @@ -142,8 +142,4 @@ dependencies {
implementation("com.google.dagger:hilt-android:2.42")
//noinspection GradleDependency
kapt("com.google.dagger:hilt-compiler:2.42")

testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
}
Binary file modified app/release/app-release.apk
Binary file not shown.
4 changes: 2 additions & 2 deletions app/release/output-metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 16,
"versionName": "1.3.2",
"versionCode": 17,
"versionName": "1.3.3",
"outputFile": "app-release.apk"
}
],
Expand Down
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
</intent-filter>
</activity>
<activity android:name=".ui.HelpActivity" />
<activity android:name=".ui.InfoActivity" />
<activity android:name=".ui.AboutMeActivity" />
<activity android:name=".ui.AboutActivity" />
<activity android:name=".ui.NotificationIntroActivity" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,30 +10,29 @@ class CheckAppStartUseCase @Inject constructor(
private val getUserSettings: GetUserSettingsUseCase,
private val updateUserSettings: UpdateUserSettingsUseCase,
) {
suspend operator fun invoke(): AppStart =
withContext(Dispatchers.Default) {
val userSettings = getUserSettings()
val versionCode: Int = BuildConfig.VERSION_CODE
val versionName: String = BuildConfig.VERSION_NAME
updateUserSettings { it.copy(lastVersionCode = versionCode, lastVersionName = versionName) }
Log.d("CheckAppStart", "Current version code: $versionCode , last version code: ${userSettings.lastVersionCode}")
Log.d("CheckAppStart", "Current version name: $versionName , last version name: ${userSettings.lastVersionName}")
if (userSettings.lastVersionCode < 1) updateUserSettings { it.copy(tosAccepted = false) }
return@withContext when {
userSettings.lastVersionCode == -1 -> AppStart.FIRST_TIME
userSettings.lastVersionCode < versionCode -> AppStart.FIRST_TIME_VERSION
userSettings.lastVersionCode > versionCode -> {
Log.w(
"checkAppStart",
"Current version code ($versionCode) is less then the one recognized on " +
"last startup (${userSettings.lastVersionCode}). Defensively assuming normal app start."
)
AppStart.NORMAL
}
else -> AppStart.NORMAL
suspend operator fun invoke(): AppStart = withContext(Dispatchers.Default) {
val userSettings = getUserSettings()
val versionCode: Int = BuildConfig.VERSION_CODE
val versionName: String = BuildConfig.VERSION_NAME
updateUserSettings { it.copy(lastVersionCode = versionCode, lastVersionName = versionName) }
Log.d("CheckAppStart", "Current version code: $versionCode , last version code: ${userSettings.lastVersionCode}")
Log.d("CheckAppStart", "Current version name: $versionName , last version name: ${userSettings.lastVersionName}")
if (userSettings.lastVersionCode < 1) updateUserSettings { it.copy(tosAccepted = false) }
return@withContext when {
userSettings.lastVersionCode == -1 -> AppStart.FIRST_TIME
userSettings.lastVersionCode < versionCode -> AppStart.FIRST_TIME_VERSION
userSettings.lastVersionCode > versionCode -> {
Log.w(
"checkAppStart",
"Current version code ($versionCode) is less then the one recognized on " +
"last startup (${userSettings.lastVersionCode}). Defensively assuming normal app start."
)
AppStart.NORMAL
}
}

else -> AppStart.NORMAL
}
}
}

enum class AppStart {
Expand Down
10 changes: 8 additions & 2 deletions app/src/main/java/de/lemke/studiportal/ui/AboutActivity.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package de.lemke.studiportal.ui

import android.content.ActivityNotFoundException
import android.content.Intent
import android.content.IntentSender.SendIntentException
import android.net.ConnectivityManager
Expand All @@ -9,6 +10,7 @@ import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import com.google.android.play.core.appupdate.AppUpdateInfo
Expand Down Expand Up @@ -64,7 +66,7 @@ class AboutActivity : AppCompatActivity() {
}
})
val version: TextView = binding.appInfoLayout.findViewById(dev.oneuiproject.oneui.design.R.id.app_info_version)
lifecycleScope. launch { setVersionTextView(version, getUserSettings().devModeEnabled) }
lifecycleScope.launch { setVersionTextView(version, getUserSettings().devModeEnabled) }
version.setOnClickListener {
clicks++
if (clicks > 5) {
Expand All @@ -78,7 +80,11 @@ class AboutActivity : AppCompatActivity() {
}
binding.aboutBtnOpenInStore.setOnClickListener { openApp(packageName, false) }
binding.aboutBtnOpenOneuiGithub.setOnClickListener {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.oneui_github_link))))
try {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.oneui_github_link))))
} catch (e: ActivityNotFoundException) {
Toast.makeText(this, getString(R.string.no_browser_app_installed), Toast.LENGTH_SHORT).show()
}
}
binding.aboutBtnAboutMe.setOnClickListener {
startActivity(Intent(this@AboutActivity, AboutMeActivity::class.java))
Expand Down
99 changes: 99 additions & 0 deletions app/src/main/java/de/lemke/studiportal/ui/InfoActivity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
package de.lemke.studiportal.ui

import android.content.ActivityNotFoundException
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import dagger.hilt.android.AndroidEntryPoint
import de.lemke.studiportal.R
import de.lemke.studiportal.databinding.ActivityInfoBinding
import de.lemke.studiportal.domain.SetWorkManagerUseCase
import javax.inject.Inject

@AndroidEntryPoint
class InfoActivity : AppCompatActivity() {
private lateinit var binding: ActivityInfoBinding

@Inject
lateinit var setWorkManager: SetWorkManagerUseCase

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityInfoBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.videoViewOffline.apply {
focusable = View.NOT_FOCUSABLE
setVideoPath("android.resource://" + packageName + "/" + R.raw.where)
setOnPreparedListener { mediaPlayer ->
mediaPlayer.isLooping = true
start()
binding.nestedScrollView.scrollTo(0, 0)
}
}
binding.videoViewOnline.apply {
focusable = View.NOT_FOCUSABLE
setVideoPath("android.resource://" + packageName + "/" + R.raw.yeah)
setOnPreparedListener { mediaPlayer ->
mediaPlayer.isLooping = true
start()
binding.nestedScrollView.scrollTo(0, 0)
}
}
binding.videoViewSSO.apply {
focusable = View.NOT_FOCUSABLE
setVideoPath("android.resource://" + packageName + "/" + R.raw.huh)
setOnPreparedListener { mediaPlayer ->
mediaPlayer.isLooping = true
start()
binding.nestedScrollView.scrollTo(0, 0)
}
}
binding.videoViewBeg.apply {
focusable = View.NOT_FOCUSABLE
setVideoPath("android.resource://" + packageName + "/" + R.raw.beg)
setOnPreparedListener { mediaPlayer ->
mediaPlayer.isLooping = true
start()
binding.nestedScrollView.scrollTo(0, 0)
}
}
binding.openOnlineButton.setOnClickListener {
try {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.studiportal_url))))
} catch (e: ActivityNotFoundException) {
Toast.makeText(this, getString(R.string.no_browser_app_installed), Toast.LENGTH_SHORT).show()
}
}
binding.imzButton.setOnClickListener {
try {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.hfu_imz_url))))
} catch (e: ActivityNotFoundException) {
Toast.makeText(this, getString(R.string.no_browser_app_installed), Toast.LENGTH_SHORT).show()
}
}
binding.contactMeButton.setOnClickListener {
val intent = Intent(Intent.ACTION_SENDTO)
intent.data = Uri.parse("mailto:") // only email apps should handle this
intent.putExtra(Intent.EXTRA_EMAIL, arrayOf(getString(R.string.email)))
intent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.app_name))
intent.putExtra(Intent.EXTRA_TEXT, "")
try {
startActivity(intent)
} catch (ex: ActivityNotFoundException) {
Toast.makeText(this, getString(R.string.no_email_app_installed), Toast.LENGTH_SHORT).show()
}
}
binding.contributeOnGithubButton.setOnClickListener {
try {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.studiportal_github))))
} catch (e: ActivityNotFoundException) {
Toast.makeText(this, getString(R.string.no_browser_app_installed), Toast.LENGTH_SHORT).show()
}
}

setWorkManager.cancelStudiportalWork()
}
}
4 changes: 1 addition & 3 deletions app/src/main/java/de/lemke/studiportal/ui/LoginActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,7 @@ class LoginActivity : AppCompatActivity() {
val videoView = FrameLayout(this@LoginActivity).apply {
addView(
VideoView(this@LoginActivity).apply {
setVideoPath(
"android.resource://$packageName/" + listOf(R.raw.hfu_meme_1, R.raw.hfu_meme_2, R.raw.hfu_meme_3).random()
)
setVideoPath("android.resource://$packageName/" + R.raw.where)
setOnPreparedListener { mediaPlayer ->
mediaPlayer.isLooping = true
start()
Expand Down
28 changes: 20 additions & 8 deletions app/src/main/java/de/lemke/studiportal/ui/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package de.lemke.studiportal.ui

import android.annotation.SuppressLint
import android.app.SearchManager
import android.content.ActivityNotFoundException
import android.content.Intent
import android.net.Uri
import android.os.Build
Expand Down Expand Up @@ -136,18 +137,27 @@ class MainActivity : AppCompatActivity(R.layout.activity_main) {
}*/

lifecycleScope.launch {
when (checkAppStart()) {
checkAppStart()
//manually waiting for the animation to finish :/
delay(700 - (System.currentTimeMillis() - time).coerceAtLeast(0L))
startActivity(Intent(this@MainActivity, InfoActivity::class.java))
if (Build.VERSION.SDK_INT < 34) {
@Suppress("DEPRECATION")
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
}
finish()
/*when (checkAppStart()) {
AppStart.FIRST_TIME -> openOOBE()
AppStart.NORMAL -> checkTOS(getUserSettings())
AppStart.FIRST_TIME_VERSION -> checkTOS(getUserSettings())
}
}*/
}
}

private suspend fun openOOBE() {
//manually waiting for the animation to finish :/
delay(700 - (System.currentTimeMillis() - time).coerceAtLeast(0L))
startActivity(Intent(applicationContext, OOBEActivity::class.java))
startActivity(Intent(this@MainActivity, OOBEActivity::class.java))
if (Build.VERSION.SDK_INT < 34) {
@Suppress("DEPRECATION")
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
Expand All @@ -164,7 +174,7 @@ class MainActivity : AppCompatActivity(R.layout.activity_main) {
if (userSettings.username.isBlank()) {
//manually waiting for the animation to finish :/
delay(700 - (System.currentTimeMillis() - time).coerceAtLeast(0L))
startActivity(Intent(applicationContext, LoginActivity::class.java))
startActivity(Intent(this@MainActivity, LoginActivity::class.java))
if (Build.VERSION.SDK_INT < 34) {
@Suppress("DEPRECATION")
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
Expand Down Expand Up @@ -250,7 +260,11 @@ class MainActivity : AppCompatActivity(R.layout.activity_main) {
}

R.id.menu_item_open_online -> {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.studiportal_url))))
try {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.studiportal_url))))
} catch (e: ActivityNotFoundException) {
Toast.makeText(this, getString(R.string.no_browser_app_installed), Toast.LENGTH_SHORT).show()
}
return true
}

Expand Down Expand Up @@ -412,9 +426,7 @@ class MainActivity : AppCompatActivity(R.layout.activity_main) {
val videoView = FrameLayout(this).apply {
addView(
VideoView(this@MainActivity).apply {
setVideoPath(
"android.resource://$packageName/" + listOf(R.raw.hfu_meme_1, R.raw.hfu_meme_2, R.raw.hfu_meme_3).random()
)
setVideoPath("android.resource://$packageName/" + R.raw.where)
setOnPreparedListener { mediaPlayer ->
mediaPlayer.isLooping = true
start()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import de.lemke.studiportal.domain.GetUserSettingsUseCase
import de.lemke.studiportal.domain.UpdateUserSettingsUseCase
import de.lemke.studiportal.domain.setCustomOnBackPressedLogic
import kotlinx.coroutines.launch
import java.util.*
import javax.inject.Inject

@AndroidEntryPoint
Expand Down
Loading

0 comments on commit 2d539c0

Please sign in to comment.