Skip to content

Commit

Permalink
Edured-78: Add implementation for remove service
Browse files Browse the repository at this point in the history
Remove unrequired Companion object wrapper for Provider.
Make sure the data and activity screen can show loading state & error messages. Refactored screen to use the existing top app bar.
Navigate to remove service warning screen from Data & Activity screen. Grouped navigation graph destinations.
  • Loading branch information
Iulia Stana committed Apr 12, 2023
1 parent 7b6556c commit f96ecd8
Show file tree
Hide file tree
Showing 13 changed files with 407 additions and 133 deletions.
3 changes: 3 additions & 0 deletions app/src/main/kotlin/nl/eduid/di/api/EduIdApi.kt
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,7 @@ interface EduIdApi {

@PUT("/mobile/api/sp/institution")
suspend fun removeConnection(@Body account: LinkedAccount): Response<UserDetails>

@PUT("/mobile/api/sp/service")
suspend fun removeService(@Body serviceId: DeleteServiceRequest): Response<UserDetails>
}
17 changes: 11 additions & 6 deletions app/src/main/kotlin/nl/eduid/di/model/EduIdModels.kt
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,7 @@ const val EMAIL_DOMAIN_FORBIDDEN = 412
data class EnrollResponse(
val url: String,
val enrollmentKey: String,
@Json(name = "qrcode")
val qrCode: String,
@Json(name = "qrcode") val qrCode: String,
) : Parcelable

@Parcelize
Expand All @@ -66,7 +65,7 @@ data class UserDetails(
val eduIdPerServiceProvider: Map<String, EduIdPerServiceProvider>,

val loginOptions: List<String>,
val registration: Registration?
val registration: Registration?,
) : Parcelable {

fun isRecoveryRequired(): Boolean = registration?.status != "FINALIZED"
Expand All @@ -80,7 +79,7 @@ data class EduIdPerServiceProvider(
val serviceName: String,
val serviceNameNl: String,
val serviceLogoUrl: String,
val createdAt: Long
val createdAt: Long,
) : Parcelable

@Parcelize
Expand All @@ -94,7 +93,7 @@ data class LinkedAccount(
val familyName: String,
val eduPersonAffiliations: List<String>,
val createdAt: Long,
val expiresAt: Long
val expiresAt: Long,
) : Parcelable

@Parcelize
Expand All @@ -113,10 +112,16 @@ data class InstitutionNameResponse(
val displayNameEn: String,
val displayNameNl: String,

) : Parcelable
) : Parcelable

@Parcelize
@JsonClass(generateAdapter = true)
data class EmailChangeRequest(
val email: String,
) : Parcelable

@Parcelize
@JsonClass(generateAdapter = true)
data class DeleteServiceRequest(
val serviceId: String,
) : Parcelable
79 changes: 51 additions & 28 deletions app/src/main/kotlin/nl/eduid/graphs/MainGraph.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import nl.eduid.screens.biometric.EnableBiometricViewModel
import nl.eduid.screens.created.RequestEduIdCreatedScreen
import nl.eduid.screens.dataactivity.DataAndActivityScreen
import nl.eduid.screens.dataactivity.DataAndActivityViewModel
import nl.eduid.screens.dataactivity.DeleteServiceScreen
import nl.eduid.screens.deeplinks.DeepLinkScreen
import nl.eduid.screens.deeplinks.DeepLinkViewModel
import nl.eduid.screens.deleteaccountfirstconfirm.DeleteAccountFirstConfirmScreen
Expand Down Expand Up @@ -379,15 +380,63 @@ fun MainGraph(
},
) { navController.popBackStack() }
}
//region Delete Account
composable(
route = ManageAccountRoute.routeWithArgs, arguments = ManageAccountRoute.arguments
) { entry ->
val viewModel = hiltViewModel<ManageAccountViewModel>(entry)
ManageAccountScreen(
viewModel = viewModel,
goBack = { navController.popBackStack() },
onDeleteAccountPressed = { navController.navigate(Graph.DELETE_ACCOUNT_FIRST_CONFIRM) },
dateString = ManageAccountRoute.decodeDateFromEntry(entry),
)
}

composable(Graph.DELETE_ACCOUNT_FIRST_CONFIRM) {
DeleteAccountFirstConfirmScreen(
goBack = { navController.popBackStack() },
onDeleteAccountPressed = { navController.navigate(Graph.DELETE_ACCOUNT_SECOND_CONFIRM) },
)
}

composable(Graph.DELETE_ACCOUNT_SECOND_CONFIRM) {
val viewModel = hiltViewModel<DeleteAccountSecondConfirmViewModel>(it)
DeleteAccountSecondConfirmScreen(
viewModel = viewModel,
goBack = { navController.popBackStack() },
)
}//endregion
//endregion
//region Data and activity
composable(Graph.DATA_AND_ACTIVITY) {
val viewModel = hiltViewModel<DataAndActivityViewModel>(it)
DataAndActivityScreen(
viewModel = viewModel,
goBack = { navController.popBackStack() },
onDeleteLoginClicked = {},
goToConfirmDeleteService = {
navController.navigate(
ConfirmDeleteService.routeForIndex(
it
)
)
},
)
}
composable(
route = ConfirmDeleteService.routeWithArgs, arguments = ConfirmDeleteService.arguments
) { entry ->
val viewModel = hiltViewModel<DataAndActivityViewModel>(entry)
val index = entry.arguments?.getInt(ConfirmDeleteService.serviceIndexArg, 0) ?: 0
DeleteServiceScreen(
viewModel = viewModel,
goBack = { navController.popBackStack() },
index = index,
)
}

//endregion
//region Security
composable(Graph.SECURITY) {
val viewModel = hiltViewModel<SecurityViewModel>(it)
SecurityScreen(
Expand Down Expand Up @@ -421,33 +470,7 @@ fun MainGraph(
onSaveNewEmailRequested = { email -> navController.goToEmailSent(email) },
)
}

composable(
route = ManageAccountRoute.routeWithArgs, arguments = ManageAccountRoute.arguments
) { entry ->
val viewModel = hiltViewModel<ManageAccountViewModel>(entry)
ManageAccountScreen(
viewModel = viewModel,
goBack = { navController.popBackStack() },
onDeleteAccountPressed = { navController.navigate(Graph.DELETE_ACCOUNT_FIRST_CONFIRM) },
dateString = ManageAccountRoute.decodeDateFromEntry(entry),
)
}

composable(Graph.DELETE_ACCOUNT_FIRST_CONFIRM) {
DeleteAccountFirstConfirmScreen(
goBack = { navController.popBackStack() },
onDeleteAccountPressed = { navController.navigate(Graph.DELETE_ACCOUNT_SECOND_CONFIRM) },
)
}

composable(Graph.DELETE_ACCOUNT_SECOND_CONFIRM) {
val viewModel = hiltViewModel<DeleteAccountSecondConfirmViewModel>(it)
DeleteAccountSecondConfirmScreen(
viewModel = viewModel,
goBack = { navController.popBackStack() },
)
}
//endregion
}

private fun NavController.goToEmailSent(email: String) = navigate(
Expand Down
13 changes: 13 additions & 0 deletions app/src/main/kotlin/nl/eduid/graphs/Routes.kt
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,19 @@ object RequestEduIdLinkSent {
}
}

object ConfirmDeleteService {
private const val route = "confirm_delete_service"
const val serviceIndexArg = "serviceIndexArg"
val routeWithArgs = "$route/{$serviceIndexArg}"
val arguments = listOf(navArgument(serviceIndexArg) {
type = NavType.IntType
nullable = false
defaultValue = 0
})

fun routeForIndex(index: Int) = "$route/$index"
}

sealed class PhoneNumberRecovery(val route: String) {
object RequestCode : PhoneNumberRecovery("phone_number_recover")
object ConfirmCode : PhoneNumberRecovery("phone_number_confirm_code") {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,11 @@ package nl.eduid.screens.dataactivity
data class DataAndActivityData(
val providerList: List<Provider>? = null,
) {
companion object {
data class Provider(
val providerName: String,
val createdStamp: Long,
val firstLoginStamp: Long,
val uniqueId: String,
val providerLogoUrl: String,
)
}
data class Provider(
val providerName: String,
val createdStamp: Long,
val firstLoginStamp: Long,
val uniqueId: String,
val providerLogoUrl: String,
)
}
Loading

0 comments on commit f96ecd8

Please sign in to comment.