Skip to content

Commit

Permalink
Merge pull request #11 from anangkur/dashboard
Browse files Browse the repository at this point in the history
Dashboard
  • Loading branch information
anangkur authored May 4, 2020
2 parents d2f6fca + 5f4cc5d commit 6899a4e
Show file tree
Hide file tree
Showing 61 changed files with 915 additions and 344 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ android {
applicationId "com.anangkur.mediku"
minSdkVersion 21
targetSdkVersion 29
versionCode 23
versionName "2.3"
versionCode 30
versionName "v3.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
Expand Down
8 changes: 2 additions & 6 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@
android:supportsRtl="true"
android:theme="@style/MaterialTheme"
android:usesCleartextTraffic="true">

<activity android:name=".feature.about.AboutActivity"/>
<activity android:name=".feature.about.AboutActivity" />
<activity android:name=".feature.mens.menstrualEdit.MenstrualEditActivity" />
<activity android:name=".feature.mens.menstrual.MenstrualActivity" />
<activity android:name=".feature.originalNews.OriginalNewsActivity" />
Expand All @@ -26,22 +25,20 @@
<activity android:name=".feature.covid.covid19.CovidActivity" />
<activity android:name=".feature.medicalRecords.detailMedicalRecord.DetailMedicalRecordActivity" />
<activity android:name=".feature.medicalRecords.addMedicalRecord.AddMedicalRecordActivity" />
<activity android:name=".feature.dashboard.home.HomeActivity" />
<activity android:name=".feature.medicalRecords.listMedicalRecords.MedicalRecordsActivity" />
<activity android:name=".feature.auth.forgotPassword.ForgotPasswordActivity" />
<activity android:name=".feature.auth.editPassword.EditPasswordActivity" />
<activity android:name=".feature.profile.editProfile.EditProfileActivity" />
<activity android:name=".feature.profile.userProfile.ProfileActivity" />
<activity android:name=".feature.auth.signUp.SignUpActivity" />
<activity android:name=".feature.auth.signIn.SignInActivity" />

<activity android:name=".feature.splash.SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity
android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
android:theme="@style/Base.Theme.AppCompat" />
Expand All @@ -55,7 +52,6 @@
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>

</application>

</manifest>
3 changes: 3 additions & 0 deletions app/src/main/java/com/anangkur/mediku/data/DataSource.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ import retrofit2.http.Path

interface DataSource {

fun saveFirebaseToken(firebaseToken: String) { throw Exception() }
fun loadFirebaseToken(): String { throw Exception() }

suspend fun getTopHeadlinesNews(
apiKey: String?,
country: String?,
Expand Down
8 changes: 8 additions & 0 deletions app/src/main/java/com/anangkur/mediku/data/Repository.kt
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,14 @@ class Repository(val remoteRepository: RemoteRepository, private val localReposi
return localRepository.loadCountry()
}

fun saveFirebaseToken(firebaseToken: String){
localRepository.saveFirebaseToken(firebaseToken)
}

fun loadFirebaseToken(): String {
return localRepository.loadFirebaseToken()
}

companion object{
@Volatile private var INSTANCE: Repository? = null
fun getInstance(remoteRepository: RemoteRepository, localRepository: LocalRepository) = INSTANCE ?: synchronized(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import com.anangkur.mediku.feature.medicalRecords.detailMedicalRecord.DetailMedi
import com.anangkur.mediku.feature.auth.editPassword.EditPasswordViewModel
import com.anangkur.mediku.feature.profile.editProfile.EditProfileViewModel
import com.anangkur.mediku.feature.auth.forgotPassword.ForgotPasswordViewModel
import com.anangkur.mediku.feature.dashboard.home.HomeViewModel
import com.anangkur.mediku.feature.medicalRecords.listMedicalRecords.MedicalRecordsViewModel
import com.anangkur.mediku.feature.dashboard.main.home.HomeViewModel as HomeViewModelFragment
import com.anangkur.mediku.feature.dashboard.main.MainViewModel
import com.anangkur.mediku.feature.mens.menstrual.MenstrualViewModel
Expand Down Expand Up @@ -49,7 +49,7 @@ class ViewModelFactory(private val repository: Repository): ViewModelProvider.Ne

isAssignableFrom(HomeViewModelFragment::class.java) -> HomeViewModelFragment(repository)
isAssignableFrom(MainViewModel::class.java) -> MainViewModel(repository)
isAssignableFrom(HomeViewModel::class.java) -> HomeViewModel(repository)
isAssignableFrom(MedicalRecordsViewModel::class.java) -> MedicalRecordsViewModel(repository)

isAssignableFrom(AddMedicalRecordViewModel::class.java) -> AddMedicalRecordViewModel(repository)
isAssignableFrom(DetailMedicalRecordViewModel::class.java) -> DetailMedicalRecordViewModel(repository)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,30 @@
package com.anangkur.mediku.data.local

import android.annotation.SuppressLint
import android.content.Context
import android.content.SharedPreferences
import androidx.lifecycle.LiveData
import com.anangkur.mediku.data.DataSource
import com.anangkur.mediku.data.local.room.AppDao
import com.anangkur.mediku.data.model.covid19.Covid19ApiResponse
import com.anangkur.mediku.data.model.covid19.Covid19Data
import com.anangkur.mediku.data.model.newCovid19.NewCovid19DataCountry
import com.anangkur.mediku.data.model.newCovid19.NewCovid19Summary
import com.anangkur.mediku.data.model.news.Article
import com.anangkur.mediku.util.Const.EXTRA_COUNTRY
import com.anangkur.mediku.util.Const
import com.anangkur.mediku.util.Const.PREF_COUNTRY

class LocalRepository(
private val preferences: SharedPreferences,
private val dao: AppDao
): DataSource {

override fun saveFirebaseToken(firebaseToken: String) {
preferences.edit().putString(Const.PREF_FIREBASE_TOKEN, firebaseToken).apply()
}

override fun loadFirebaseToken(): String {
return preferences.getString(Const.PREF_FIREBASE_TOKEN, "") ?: ""
}

/**
* News
*/
Expand Down Expand Up @@ -87,11 +94,11 @@ class LocalRepository(
* preferences
*/
override fun saveCountry(country: String) {
preferences.edit().putString(EXTRA_COUNTRY, country).apply()
preferences.edit().putString(PREF_COUNTRY, country).apply()
}

override fun loadCountry(): String {
return preferences.getString(EXTRA_COUNTRY, "")?:""
return preferences.getString(PREF_COUNTRY, "")?:""
}

companion object{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@ data class User(
var height: Int = 0,
var weight: Int = 0,
var photo: String = "",
var providerName: String = ""
var providerName: String = "",
var firebaseToken: String = ""
)
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ interface AboutActionListener {
fun onClickResourceChild(resourceChild: Resource.ResourceChild)
fun onClickCovid19Api(url: String)
fun onClickNewsApi(url: String)
fun onClickGiveRating(url: String)
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import com.anangkur.mediku.util.obtainViewModel
import com.anangkur.mediku.util.openBrowser
import com.anangkur.mediku.util.setupRecyclerViewLinear
import kotlinx.android.synthetic.main.activity_about.*
import kotlinx.android.synthetic.main.layout_toolbar.*
import kotlinx.android.synthetic.main.layout_toolbar_back.*

class AboutActivity: BaseActivity<AboutViewModel>(), AboutActionListener {

Expand Down Expand Up @@ -45,6 +45,7 @@ class AboutActivity: BaseActivity<AboutViewModel>(), AboutActionListener {
tv_version_number.text = BuildConfig.VERSION_NAME
tv_covid_19_data.setOnClickListener { this.onClickCovid19Api("https://covid19api.com") }
tv_news_data.setOnClickListener { this.onClickNewsApi("https://newsapi.org") }
btn_rate.setOnClickListener { this.onClickGiveRating("https://play.google.com/store/apps/details?id=com.anangkur.mediku") }
}

private fun setupAdapter(){
Expand Down Expand Up @@ -78,4 +79,8 @@ class AboutActivity: BaseActivity<AboutViewModel>(), AboutActionListener {
override fun onClickNewsApi(url: String) {
openBrowser(url)
}

override fun onClickGiveRating(url: String) {
openBrowser(url)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ class AboutViewModel(private val repository: Repository): ViewModel() {
listResource.add(createResourceGoodWare())
listResource.add(createResourceNhorPhai())
listResource.add(createResourceEducalyp())
listResource.add(createResourceIconixar())
listResourceLive.postValue(listResource)
}

Expand Down Expand Up @@ -63,6 +64,27 @@ class AboutViewModel(private val repository: Repository): ViewModel() {
link = "https://www.flaticon.com/free-icon/student_167750"
)
)
listResourceChild.add(
Resource.ResourceChild(
image = R.drawable.ic_medical_records,
name = "Prescription",
link = "https://www.flaticon.com/free-icon/prescription_2755093"
)
)
listResourceChild.add(
Resource.ResourceChild(
image = R.drawable.ic_covid_stat,
name = "Diagram",
link = "https://www.flaticon.com/free-icon/diagram_2585314"
)
)
listResourceChild.add(
Resource.ResourceChild(
image = R.drawable.ic_covid_check,
name = "Medical Report",
link = "https://www.flaticon.com/free-icon/medical-report_2718054"
)
)
return Resource(
title = "Icon made by Freepik from www.flaticon.com",
child = listResourceChild,
Expand Down Expand Up @@ -156,4 +178,20 @@ class AboutViewModel(private val repository: Repository): ViewModel() {
child = listResourceChild
)
}

private fun createResourceIconixar(): Resource {
val listResourceChild = ArrayList<Resource.ResourceChild>()
listResourceChild.add(
Resource.ResourceChild(
image = R.drawable.ic_menstrual_period,
link = "https://www.flaticon.com/free-icon/calendar_2413771",
name = "Calendar"
)
)
return Resource(
title = "Icon made by Iconixar from www.flaticon.com",
link = "https://www.flaticon.com/authors/iconixar",
child = listResourceChild
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import com.anangkur.mediku.base.BaseActivity
import com.anangkur.mediku.feature.auth.signIn.SignInActivity
import com.anangkur.mediku.util.*
import kotlinx.android.synthetic.main.activity_edit_password.*
import kotlinx.android.synthetic.main.layout_toolbar.*
import kotlinx.android.synthetic.main.layout_toolbar_back.*

class EditPasswordActivity: BaseActivity<EditPasswordViewModel>(), EditPasswordActionListener {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ class SignInViewModel(private val repository: Repository): ViewModel() {
.get()
.addOnSuccessListener {
val userFirestore = it.toObject<User>()
if (userFirestore != null){
if (userFirestore != null && it.contains("firebaseToken")){
resultSignInLive.postValue(user)
}else{
val userMap = User(
Expand All @@ -81,7 +81,9 @@ class SignInViewModel(private val repository: Repository): ViewModel() {
height = 0,
weight = 0,
photo = user.photoUrl.toString(),
providerName = user.providerData[user.providerData.size-1].providerId)
providerName = user.providerData[user.providerData.size-1].providerId,
firebaseToken = loadFirebaseToken()
)
repository.remoteRepository.firestore.collection(Const.COLLECTION_USER)
.document(user.uid)
.set(userMap)
Expand All @@ -105,4 +107,8 @@ class SignInViewModel(private val repository: Repository): ViewModel() {
}
}
}

private fun loadFirebaseToken(): String {
return repository.loadFirebaseToken()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,9 @@ class SignUpViewModel(private val repository: Repository): ViewModel() {
height = 0,
weight = 0,
photo = user.photoUrl.toString(),
providerName = user.providerData[user.providerData.size-1].providerId)
providerName = user.providerData[user.providerData.size-1].providerId,
firebaseToken = loadFirebaseToken()
)
repository.remoteRepository.firestore.collection(Const.COLLECTION_USER)
.document(user.uid)
.set(userMap)
Expand Down Expand Up @@ -134,4 +136,8 @@ class SignUpViewModel(private val repository: Repository): ViewModel() {
}
}
}

private fun loadFirebaseToken(): String {
return repository.loadFirebaseToken()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import com.anangkur.mediku.feature.covid.covid19.adapter.CovidHorizontalAdapter
import com.anangkur.mediku.feature.covid.covid19.adapter.CovidVerticalAdapter
import com.anangkur.mediku.util.*
import kotlinx.android.synthetic.main.activity_covid.*
import kotlinx.android.synthetic.main.layout_toolbar.*
import kotlinx.android.synthetic.main.layout_toolbar_back.*
import java.text.SimpleDateFormat
import java.util.*

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,6 @@ interface HomeActionListener {
fun onClickNews(data: Article)
fun onClickMedicalRecord(data: MedicalRecord)
fun onClickMenstrualPeriod()
fun onClickCovid19Check()
fun onClickMedicalRecords()
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,17 @@ import com.anangkur.mediku.feature.covid.covid19.CovidActivity
import com.anangkur.mediku.feature.medicalRecords.detailMedicalRecord.DetailMedicalRecordActivity
import com.anangkur.mediku.feature.dashboard.main.home.adapter.MedicalRecordAdapter
import com.anangkur.mediku.feature.dashboard.main.home.adapter.NewsAdapter
import com.anangkur.mediku.feature.medicalRecords.listMedicalRecords.MedicalRecordsActivity
import com.anangkur.mediku.feature.mens.menstrual.MenstrualActivity
import com.anangkur.mediku.feature.originalNews.OriginalNewsActivity
import com.anangkur.mediku.util.*
import kotlinx.android.synthetic.main.fragment_home.*
import kotlinx.android.synthetic.main.layout_covid19_alert.*
import kotlinx.android.synthetic.main.layout_medical_records.*
import kotlinx.android.synthetic.main.layout_menstrual_period.*
import kotlinx.android.synthetic.main.layout_menu_dashboard.*
import kotlinx.android.synthetic.main.layout_news.*
import kotlinx.android.synthetic.main.layout_welcome.*

class HomeFragment: BaseFragment<HomeViewModel>(), HomeActionListener {

Expand Down Expand Up @@ -44,8 +51,14 @@ class HomeFragment: BaseFragment<HomeViewModel>(), HomeActionListener {
mViewModel.getMedicalRecord()
swipe_home.isRefreshing = false
}

card_covid.setOnClickListener { this.onClickCovid19() }
layout_menstrual_period.setOnClickListener { this.onClickMenstrualPeriod() }

menu_covid_check.setOnClickListener { this.onClickCovid19Check() }
menu_covid_stat.setOnClickListener { this.onClickCovid19() }
menu_medical_records.setOnClickListener { this.onClickMedicalRecords() }
menu_menstrual_period.setOnClickListener { this.onClickMenstrualPeriod() }
}

override fun onResume() {
Expand Down Expand Up @@ -156,4 +169,12 @@ class HomeFragment: BaseFragment<HomeViewModel>(), HomeActionListener {
override fun onClickMenstrualPeriod() {
MenstrualActivity.startActivity(requireContext())
}

override fun onClickCovid19Check() {
OriginalNewsActivity.startActivity(requireContext(), "https://www.halodoc.com/tanya-jawab-seputar-virus-corona/")
}

override fun onClickMedicalRecords() {
MedicalRecordsActivity.startActivity(requireContext())
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import com.applandeo.materialcalendarview.listeners.OnSelectDateListener
import com.esafirm.imagepicker.features.ImagePicker
import com.theartofdev.edmodo.cropper.CropImage
import kotlinx.android.synthetic.main.activity_add_medical_record.*
import kotlinx.android.synthetic.main.layout_toolbar.*
import kotlinx.android.synthetic.main.layout_toolbar_back.*
import java.io.File
import java.text.SimpleDateFormat
import java.util.*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import com.anangkur.mediku.feature.medicalRecords.addMedicalRecord.AddMedicalRec
import com.anangkur.mediku.feature.medicalRecords.addMedicalRecord.AddMedicalRecordActivity.Companion.RES_EDIT
import com.anangkur.mediku.util.*
import kotlinx.android.synthetic.main.activity_detail_medical_record.*
import kotlinx.android.synthetic.main.layout_toolbar.*
import kotlinx.android.synthetic.main.layout_toolbar_back.*
import java.text.SimpleDateFormat
import java.util.*

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.anangkur.mediku.feature.dashboard.home
package com.anangkur.mediku.feature.medicalRecords.listMedicalRecords

import com.anangkur.mediku.data.model.medical.MedicalRecord

interface HomeActionListener {
interface MedicalRecordsActionListener {
fun onClickProfile()
fun onClickAddMedicalRecord()
fun onClickItem(data: MedicalRecord)
Expand Down
Loading

0 comments on commit 6899a4e

Please sign in to comment.