Skip to content

Commit

Permalink
Add Register screen
Browse files Browse the repository at this point in the history
  • Loading branch information
AlbertoMoreta committed Dec 28, 2023
1 parent 7f94170 commit dd17ee0
Show file tree
Hide file tree
Showing 63 changed files with 1,422 additions and 148 deletions.
22 changes: 14 additions & 8 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import java.util.Properties
import java.io.FileInputStream
import com.android.build.gradle.internal.api.BaseVariantOutputImpl
import com.android.build.gradle.internal.tasks.factory.dependsOn
import java.io.FileInputStream
import java.util.Locale
import java.util.Properties

plugins {
id("com.android.application")
Expand All @@ -12,6 +12,7 @@ plugins {
id("com.google.devtools.ksp")
id("org.jlleitschuh.gradle.ktlint") version "11.6.1"
id("org.sonarqube") version "4.4.1.3373"
id("kotlinx-serialization")
}

apply(from = "../jacoco.gradle.kts")
Expand All @@ -24,7 +25,7 @@ android {

defaultConfig {
applicationId = "org.digitalcampus.mobile.learning"
minSdk = 21
minSdk = 23
targetSdk = 34
versionCode = 112
versionName = "8.0.0"
Expand All @@ -48,12 +49,12 @@ android {
val value = runtimeProps.getProperty(field as String, "")

val fieldType = when {
value.lowercase(Locale.getDefault()) == "true" || value.lowercase(Locale.getDefault()) == "false" -> "boolean"
value.lowercase(Locale.getDefault()) == "true" || value.lowercase(Locale.getDefault()) == "false" -> "boolean"
value.toIntOrNull() != null -> "int"
else -> "String"
}

buildConfigField(fieldType, field, if (fieldType == "String") "\"$value\"" else value )
buildConfigField(fieldType, field, if (fieldType == "String") "\"$value\"" else value)
}
}

Expand Down Expand Up @@ -92,7 +93,6 @@ android {
testOptions {
unitTests.isReturnDefaultValues = true
}

}

dependencies {
Expand Down Expand Up @@ -133,6 +133,10 @@ dependencies {
implementation("com.google.dagger:hilt-android:$hiltVersion")
kapt("com.google.dagger:hilt-compiler:$hiltVersion")

// Third Party
implementation("com.github.acefalobi:android-stepper:0.3.0")
implementation("com.hbb20:android-country-picker:0.0.7")

// TESTING
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
Expand All @@ -146,9 +150,11 @@ dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion")
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutinesVersion")

implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.1")
}

fun loadRuntimeProps() : Properties {
fun loadRuntimeProps(): Properties {
val runtimeProps = Properties()
runtimeProps.load(FileInputStream(rootProject.file("oppia-default.properties")))

Expand Down Expand Up @@ -185,7 +191,7 @@ sonar {
property("sonar.sourceEncoding", "UTF-8")
property(
"sonar.kotlin.ktlint.reportPaths",
"build/reports/ktlint/ktlintAndroidTestSourceSetCheck/ktlintAndroidTestSourceSetCheck.xml," +
"build/reports/ktlint/ktlintAndroidTestSourceSetCheck/ktlintAndroidTestSourceSetCheck.xml," +
"build/reports/ktlint/ktlintKotlinScriptCheck/ktlintKotlinScriptCheck.xml," +
"build/reports/ktlint/ktlintMainSourceSetCheck/ktlintMainSourceSetCheck.xml," +
"build/reports/ktlint/ktlintTestSourceSetCheck/ktlintTestSourceSetCheck.xml",
Expand Down
100 changes: 100 additions & 0 deletions app/src/main/assets/registration_config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
[
{
"order": 1,
"title": "First step",
"description":"Please enter a username and your name",
"fields":[
{
"name":"username",
"label":"Username",
"min_size": 4,
"required":true,
"helper_text":"Username must have at least 4 characters",
"type":"text"
},
{
"name":"firstName",
"label":"First Name",
"required":true,
"type":"text"
},
{
"name":"lastName",
"label":"Last Name",
"required":true,
"type":"text"
}
]
},
{
"order": 2,
"title":"Second step",
"description":"Please enter a password",
"fields":[
{
"name":"password",
"label":"Password",
"required":true,
"min_size": 6,
"helper_text":"The password must have at least 6 characters.",
"type":"password"
},
{
"name":"repeatPassword",
"label":"Repeat Password",
"required":true,
"type":"password",
"should_match": "password"
}
]
},
{
"order": 3,
"title":"Third step",
"description":"Please provide some extra contact information",
"fields":[
{
"name":"email",
"label":"Email",
"required":true,
"helper_text":"",
"type":"email"
},
{
"name":"phone",
"label":"Phone Number",
"required":false,
"helper_text":"",
"type":"phone"
},
{
"name":"organization",
"label":"Organization",
"required":false,
"helper_text":"",
"type":"text"
},
{
"name":"gender",
"label":"Gender",
"required":false,
"helper_text":"",
"type":"text"
},
{
"name":"age",
"label":"Age",
"required":false,
"helper_text":"",
"type":"number"
},
{
"name":"job",
"label":"Job",
"required":false,
"helper_text":"",
"type":"text"
}
]
}
]
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ package org.digitalcampus.oppiamobile.data.config

import org.digitalcampus.oppiamobile.utils.withAppIdPrefix

val BASE_URL = "baseUrl".withAppIdPrefix()
val BASE_URL = "baseUrl".withAppIdPrefix()
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import org.digitalcampus.oppiamobile.data.course.db.entity.MediaEntity
import org.digitalcampus.oppiamobile.data.course.db.entity.SectionEntity
import org.digitalcampus.oppiamobile.data.user.db.dao.CustomFieldDao
import org.digitalcampus.oppiamobile.data.user.db.dao.PreferencesDao
import org.digitalcampus.oppiamobile.data.user.db.dao.UserCustomFieldDao
import org.digitalcampus.oppiamobile.data.user.db.dao.UserDao
import org.digitalcampus.oppiamobile.data.user.db.entity.CustomFieldEntity
import org.digitalcampus.oppiamobile.data.user.db.entity.PreferencesEntity
Expand All @@ -37,6 +38,7 @@ import org.digitalcampus.oppiamobile.data.utils.converters.DateConverters
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
abstract fun customFieldDao(): CustomFieldDao
abstract fun userCustomFieldDao(): UserCustomFieldDao
abstract fun preferencesDao(): PreferencesDao
abstract fun courseDao(): CourseDao
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,9 @@ class CourseModule {
// userRemoteDataSource: UserRemoteDataSource
// ) = UserRepository(authDbDataSource, userRemoteDataSource)


// TODO for testing api client. Remove at end
@Singleton
@Provides
fun provideTestApiUseCase(courseRemoteService: CourseRemoteService, @ApiKey apiKey: String) =
TestApiClientUseCase(courseRemoteService, apiKey)

}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
package org.digitalcampus.oppiamobile.data.course.remote

import org.digitalcampus.oppiamobile.di.ApiKey
import retrofit2.http.GET
import retrofit2.http.Header
import retrofit2.http.Path
import javax.inject.Inject

interface CourseRemoteService {

Expand All @@ -13,5 +11,4 @@ interface CourseRemoteService {

@GET("tag/{id}")
suspend fun getTag(@Header("Authorization") apiKey: String, @Path("id") id: Int): TagResponse

}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package org.digitalcampus.oppiamobile.data.course.remote


import com.google.gson.annotations.SerializedName


data class TagResponse(
@SerializedName("courses")
val courses: List<CoursesItem>?,
Expand All @@ -12,10 +10,9 @@ data class TagResponse(
@SerializedName("name")
val name: String,
@SerializedName("id")
val id: String = ""
val id: String = "",
)


data class CoursesItem(
@SerializedName("author")
val author: String?,
Expand All @@ -42,8 +39,5 @@ data class CoursesItem(
@SerializedName("status")
val status: String?,
@SerializedName("username")
val username: String?
val username: String?,
)



Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
package org.digitalcampus.oppiamobile.data.course.remote


import com.google.gson.annotations.SerializedName

data class TagsResponse(
@SerializedName("meta")
val meta: Meta,
@SerializedName("tags")
val tags: List<TagsItem>?
val tags: List<TagsItem>?,
)


data class Meta(
@SerializedName("next")
val next: Int?,
Expand All @@ -21,10 +19,9 @@ data class Meta(
@SerializedName("total_count")
val totalCount: Int,
@SerializedName("limit")
val limit: Int
val limit: Int,
)


data class TagsItem(
@SerializedName("highlight")
val highlight: Boolean,
Expand All @@ -43,9 +40,5 @@ data class TagsItem(
@SerializedName("description")
val description: String?,
@SerializedName("id")
val id: Int
val id: Int,
)




Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package org.digitalcampus.oppiamobile.data.course.repository

import org.digitalcampus.oppiamobile.data.course.remote.CourseRemoteService
import org.digitalcampus.oppiamobile.data.user.remote.auth.AuthRemoteService
import javax.inject.Inject

class CourseRemoteDataSource @Inject constructor(private val courseRemoteService: CourseRemoteService) {
}
class CourseRemoteDataSource @Inject constructor(private val courseRemoteService: CourseRemoteService)
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,12 @@ package org.digitalcampus.oppiamobile.data.user.db.dao

import androidx.room.Dao
import androidx.room.Query
import androidx.room.Transaction
import org.digitalcampus.oppiamobile.data.config.db.BaseDao
import org.digitalcampus.oppiamobile.data.user.db.entity.CustomFieldEntity
import org.digitalcampus.oppiamobile.data.user.db.entity.UserCustomFields

@Dao
interface CustomFieldDao : BaseDao<CustomFieldEntity> {

@Query("SELECT * FROM custom_field ORDER BY orderby")
fun getAll(): List<CustomFieldEntity>

@Transaction
@Query("SELECT * FROM user WHERE id = :userId")
fun getUserCustomFields(userId: Int): UserCustomFields
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.digitalcampus.oppiamobile.data.user.db.dao

import androidx.room.Dao
import androidx.room.Query
import androidx.room.Transaction
import org.digitalcampus.oppiamobile.data.config.db.BaseDao
import org.digitalcampus.oppiamobile.data.user.db.entity.UserCustomFieldEntity

@Dao
interface UserCustomFieldDao : BaseDao<UserCustomFieldEntity> {
@Transaction
@Query("SELECT * FROM user_custom_field WHERE user_id = :userId")
fun getUserCustomFields(userId: Long): UserCustomFieldEntity
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,10 @@ data class UserCustomFieldEntity(
@ColumnInfo(name = "user_id") val userId: Long,
@ColumnInfo(name = "field_key") val fieldKey: String = "",

@ColumnInfo(name = "value_str") val valueStr: String?,
@ColumnInfo(name = "value_int") val valueInt: Int?,
@ColumnInfo(name = "value_bool") val valueBool: Boolean?,
@ColumnInfo(name = "value_float") val valueFloat: Float?,
@ColumnInfo(name = "value_str") val valueStr: String? = null,
@ColumnInfo(name = "value_int") val valueInt: Int? = null,
@ColumnInfo(name = "value_bool") val valueBool: Boolean? = null,
@ColumnInfo(name = "value_float") val valueFloat: Float? = null,
)

data class UserCustomFields(
Expand Down
Loading

0 comments on commit dd17ee0

Please sign in to comment.