Skip to content

Commit

Permalink
Merge pull request #37 from geteduroam/feature/organization_fixes
Browse files Browse the repository at this point in the history
Feedback fixes
  • Loading branch information
dzolnai authored Oct 18, 2023
2 parents bffcef5 + 4143f0a commit 84766c6
Show file tree
Hide file tree
Showing 25 changed files with 492 additions and 190 deletions.
9 changes: 8 additions & 1 deletion android/app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -1,2 +1,9 @@
-keep class org.xmlpull.v1.** { *; }
-dontwarn org.xmlpull.v1.**
-dontwarn org.xmlpull.v1.**

-keep public class org.simpleframework.**{ *; }
-keep class org.simpleframework.xml.**{ *; }
-keep class org.simpleframework.xml.core.**{ *; }
-keep class org.simpleframework.xml.util.**{ *; }
-keepattributes *Annotation*
-keepattributes Signature
13 changes: 6 additions & 7 deletions android/app/src/main/java/app/eduroam/geteduroam/MainGraph.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavHostController
Expand All @@ -22,8 +20,8 @@ import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import app.eduroam.geteduroam.config.WifiConfigScreen
import app.eduroam.geteduroam.config.WifiConfigViewModel
import app.eduroam.geteduroam.institutions.SelectInstitutionScreen
import app.eduroam.geteduroam.institutions.SelectInstitutionViewModel
import app.eduroam.geteduroam.organizations.SelectOrganizationScreen
import app.eduroam.geteduroam.organizations.SelectOrganizationViewModel
import app.eduroam.geteduroam.oauth.OAuthScreen
import app.eduroam.geteduroam.oauth.OAuthViewModel
import app.eduroam.geteduroam.profile.SelectProfileModal
Expand All @@ -49,9 +47,9 @@ fun MainGraph(
navController = navController, startDestination = Route.SelectInstitution.route
) {
composable(Route.SelectInstitution.route) { entry ->
val viewModel = hiltViewModel<SelectInstitutionViewModel>(entry)
val viewModel = hiltViewModel<SelectOrganizationViewModel>(entry)
val focusManager = LocalFocusManager.current
SelectInstitutionScreen(
SelectOrganizationScreen(
viewModel = viewModel,
openProfileModal = { institutionId ->
// Remove the focus from the search field (if it was there)
Expand Down Expand Up @@ -80,7 +78,8 @@ fun MainGraph(
arguments = Route.SelectProfile.arguments,
) { entry ->
val viewModel = hiltViewModel<SelectProfileViewModel>(entry)
SelectProfileModal(viewModel = viewModel,
SelectProfileModal(
viewModel = viewModel,
goToOAuth = { auth, token ->
navController.navigate(Route.OAuth.encodeArguments(auth, token))
},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
package app.eduroam.geteduroam.config.model

import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.util.Base64
import com.squareup.moshi.JsonClass
import org.simpleframework.xml.Attribute
import org.simpleframework.xml.Text


@JsonClass(generateAdapter = true)
class ProviderLogo {

Expand All @@ -15,4 +19,12 @@ class ProviderLogo {

@field:Attribute
var encoding: String? = null
}

fun convertToBitmap() : Bitmap? {
if (encoding?.lowercase() == "base64") {
val binary = Base64.decode(value, Base64.DEFAULT)
return BitmapFactory.decodeByteArray(binary, 0, binary.size)
}
return null
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
package app.eduroam.geteduroam.di.api

import app.eduroam.geteduroam.models.InstitutionResult
import app.eduroam.geteduroam.models.OrganizationResult
import retrofit2.Response
import retrofit2.http.GET
import retrofit2.http.Header
import retrofit2.http.POST
import retrofit2.http.Url

interface GetEduroamApi {
@GET("v1/discovery.json")
suspend fun getInstitutions(): Response<InstitutionResult>
suspend fun getOrganizations(): Response<OrganizationResult>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package app.eduroam.geteduroam.extensions

import java.text.Normalizer

fun String.removeNonSpacingMarks() =
Normalizer.normalize(this, Normalizer.Form.NFD)
.replace("\\p{Mn}+".toRegex(), "")

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package app.eduroam.geteduroam.models

import android.os.Parcelable
import app.eduroam.geteduroam.extensions.removeNonSpacingMarks
import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass
import kotlinx.parcelize.IgnoredOnParcel
import kotlinx.parcelize.Parcelize

@Parcelize
@JsonClass(generateAdapter = true)
data class Organization(
@Json(name = "cat_idp")
val catIdp: Int,
val country: String,
val id: String,
val name: String?,
val profiles: List<Profile>,
) : Parcelable {
val nameOrId get() = name ?: id
@IgnoredOnParcel
val matchWords: List<String>
init {
// Split on anything which is non-alphanumeric
val words = nameOrId.split("\\W+").filter { it.isNotEmpty() }.toMutableList()
val abbreviation = words.map { it.first() }.joinToString()
words += nameOrId
words += abbreviation
matchWords = words.map { it.removeNonSpacingMarks() }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import kotlinx.parcelize.Parcelize

@Parcelize
@JsonClass(generateAdapter = true)
data class InstitutionResult(
val instances: List<Institution>,
data class OrganizationResult(
val instances: List<Organization>,
val version: Int,
) : Parcelable
Empty file.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.eduroam.geteduroam.institutions
package app.eduroam.geteduroam.organizations

import androidx.compose.foundation.layout.*
import androidx.compose.foundation.text.KeyboardActions
Expand All @@ -7,12 +7,10 @@ import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Search
import androidx.compose.material3.*
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.tooling.preview.Preview
Expand All @@ -21,7 +19,7 @@ import app.eduroam.geteduroam.R
import app.eduroam.geteduroam.ui.theme.AppTheme

@Composable
fun InstitutionSearchHeader(
fun OrganizationSearchHeader(
searchText: String, onSearchTextChange: (String) -> Unit, modifier: Modifier = Modifier,
) = Column(modifier.fillMaxWidth()) {
val focusManager = LocalFocusManager.current
Expand All @@ -40,7 +38,7 @@ fun InstitutionSearchHeader(
},
placeholder = {
Text(
text = stringResource(id = R.string.institution_search_text),
text = stringResource(id = R.string.organization_search_text),
color = MaterialTheme.colorScheme.secondary.copy(alpha = 0.7f),
modifier = Modifier.fillMaxWidth()
)
Expand Down Expand Up @@ -68,6 +66,6 @@ fun InstitutionSearchHeader(
@Composable
private fun MarketPlaceHeader_Preview() {
AppTheme {
InstitutionSearchHeader("filterOn", {})
OrganizationSearchHeader("filterOn", {})
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.eduroam.geteduroam.institutions
package app.eduroam.geteduroam.organizations

import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
Expand Down Expand Up @@ -54,6 +54,7 @@ fun LoginDialog(
.padding(vertical = 16.dp)
) {
Text(
modifier = Modifier.padding(bottom = 4.dp),
text = stringResource(R.string.login_dialog_text)
)

Expand Down Expand Up @@ -83,7 +84,8 @@ fun LoginDialog(
}

Row(
modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.End
modifier = Modifier.fillMaxWidth().padding(top = 8.dp),
horizontalArrangement = Arrangement.End
) {
TextButton(onClick = {
openDialog.value = false
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.eduroam.geteduroam.institutions
package app.eduroam.geteduroam.organizations

import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column
Expand All @@ -15,13 +15,13 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import app.eduroam.geteduroam.models.Institution
import app.eduroam.geteduroam.models.Organization


@Composable
fun InstitutionRow(
institution: Institution,
onSelectInstitution: (Institution) -> Unit,
fun OrganizationRow(
organization: Organization,
onSelectOrganization: (Organization) -> Unit,
modifier: Modifier = Modifier,
) = Surface(
color = MaterialTheme.colorScheme.surface
Expand All @@ -30,18 +30,18 @@ fun InstitutionRow(
modifier
.fillMaxWidth()
.padding(horizontal = 16.dp)
.clickable { onSelectInstitution(institution) }) {
.clickable { onSelectOrganization(organization) }) {
Spacer(Modifier.height(8.dp))
Text(
text = institution.name,
text = organization.nameOrId,
style = MaterialTheme.typography.titleMedium,
fontSize = 18.sp,
fontWeight = FontWeight.Bold,
color = MaterialTheme.colorScheme.secondary
)
Spacer(Modifier.height(4.dp))
Text(
text = institution.country,
text = organization.country,
style = MaterialTheme.typography.bodyMedium,
color = MaterialTheme.colorScheme.secondary
)
Expand Down
Loading

0 comments on commit 84766c6

Please sign in to comment.