From 4d159eadf294323af2d0f2207a92846ce9510410 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Apr 2022 14:09:30 +0000 Subject: [PATCH 01/14] Bump kotlinx-coroutines-test from 1.6.0 to 1.6.1 Bumps [kotlinx-coroutines-test](https://github.com/Kotlin/kotlinx.coroutines) from 1.6.0 to 1.6.1. - [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases) - [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md) - [Commits](https://github.com/Kotlin/kotlinx.coroutines/compare/1.6.0...1.6.1) --- updated-dependencies: - dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-test dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index ff9a9184..c1b998e3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -135,7 +135,7 @@ dependencies { testImplementation "org.hamcrest:hamcrest-all:1.3" testImplementation "androidx.arch.core:core-testing:2.1.0" testImplementation "org.robolectric:robolectric:4.7.3" - testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.0" + testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.1" testImplementation "com.google.truth:truth:$truth_version" testImplementation "org.mockito:mockito-core:$mockito_version" From 45022aca2411bd67bcb22f6be15cf66a9e22f1dc Mon Sep 17 00:00:00 2001 From: YASAN Date: Fri, 15 Apr 2022 19:39:27 +0430 Subject: [PATCH 02/14] Update changelog --- CHANGELOG.md | 6 +++--- fastlane/metadata/android/en-US/changelogs/232.txt | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 058c07bd..af4ae697 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,9 @@ ## v2.3.2 -- The search button is now moved to the top of screen. -- Added the new option to reverse the order of stations on Line screen with a button. -- Fixed stations not being sorted by their position in line on Line screen. +- The search button is now moved to the top of the screen. +- Added the new option to reverse the order of stations on the Line screen with a button. +- Fixed stations not being sorted by their position in line on the Line screen. - Added Android TV banner. - Added Android TV (leanback) launcher support. diff --git a/fastlane/metadata/android/en-US/changelogs/232.txt b/fastlane/metadata/android/en-US/changelogs/232.txt index a543bca0..ec7f8f5c 100644 --- a/fastlane/metadata/android/en-US/changelogs/232.txt +++ b/fastlane/metadata/android/en-US/changelogs/232.txt @@ -1,5 +1,5 @@ -- The search button is now moved to the top of screen. -- Added the new option to reverse the order of stations on Line screen with a button. -- Fixed stations not being sorted by their position in line on Line screen. +- The search button is now moved to the top of the screen. +- Added the new option to reverse the order of stations on the Line screen with a button. +- Fixed stations not being sorted by their position in line on the Line screen. - Added Android TV banner. - Added Android TV (leanback) launcher support. \ No newline at end of file From 6fde7d2de2647dd68bdbe0be9110631ca8ef9692 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Apr 2022 13:40:25 +0000 Subject: [PATCH 03/14] Bump leakcanary-android from 2.8.1 to 2.9 Bumps [leakcanary-android](https://github.com/square/leakcanary) from 2.8.1 to 2.9. - [Release notes](https://github.com/square/leakcanary/releases) - [Changelog](https://github.com/square/leakcanary/blob/main/docs/changelog.md) - [Commits](https://github.com/square/leakcanary/compare/v2.8.1...v2.9) --- updated-dependencies: - dependency-name: com.squareup.leakcanary:leakcanary-android dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 97a24465..d8a5d3c3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -118,7 +118,7 @@ dependencies { kapt "androidx.room:room-compiler:$room_version" // Leak Canary - debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.8.1' + debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9' // Subsampling Scale ImageView implementation 'com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0' From 5696d1d7be325a2d03f84135b0682ecef8583908 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Apr 2022 13:27:02 +0000 Subject: [PATCH 04/14] Bump leakcanary-android from 2.9 to 2.9.1 Bumps [leakcanary-android](https://github.com/square/leakcanary) from 2.9 to 2.9.1. - [Release notes](https://github.com/square/leakcanary/releases) - [Changelog](https://github.com/square/leakcanary/blob/main/docs/changelog.md) - [Commits](https://github.com/square/leakcanary/compare/v2.9...v2.9.1) --- updated-dependencies: - dependency-name: com.squareup.leakcanary:leakcanary-android dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index ca881827..77a4e830 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -118,7 +118,7 @@ dependencies { kapt "androidx.room:room-compiler:$room_version" // Leak Canary - debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9' + debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1' // Subsampling Scale ImageView implementation 'com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0' From 40f0c24843de4a1b3ad3ca2f93d11afe2e04c5d4 Mon Sep 17 00:00:00 2001 From: YASAN Date: Thu, 5 May 2022 17:56:18 +0430 Subject: [PATCH 05/14] Update YDK URL --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 73bc8f19..88cd942a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "ydk"] path = ydk - url = git@github.com:yasandev/ydk-android.git + url = git@github.com:yasan-org/ydk-android.git From 6ae5edf96fe3e64a261963e9fb3c2b42c5e1f19f Mon Sep 17 00:00:00 2001 From: YASAN Date: Thu, 5 May 2022 21:37:27 +0430 Subject: [PATCH 06/14] Update GitHub links --- .../composable/screen/about/modules/AboutLinks.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/about/modules/AboutLinks.kt b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/about/modules/AboutLinks.kt index fb1e0d12..f935ae9b 100644 --- a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/about/modules/AboutLinks.kt +++ b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/about/modules/AboutLinks.kt @@ -7,8 +7,8 @@ import dev.yasan.metro.tehran.presentation.composable.screen.about.AboutScreen */ object AboutLinks { - const val URL_APP_GITHUB = "https://github.com/yasandev/tehro-android" - const val URL_DATABASE_GITHUB = "https://github.com/yasandev/tehro-database" + const val URL_APP_GITHUB = "https://github.com/yasan-org/tehro-android" + const val URL_DATABASE_GITHUB = "https://github.com/yasan-org/tehro-database" const val URL_DEV_TELEGRAM = "https://t.me/YASANupdates" const val URL_DEV_INSTAGRAM = "https://www.instagram.com/Yasandev" From 421becd03227c460a8bc8f1630b2bb006386191d Mon Sep 17 00:00:00 2001 From: YASAN Date: Thu, 5 May 2022 21:38:59 +0430 Subject: [PATCH 07/14] Always use twitter.com/yasan for twitter links --- .../presentation/composable/screen/about/modules/AboutLinks.kt | 1 - .../composable/screen/about/modules/dev/AboutSegmentDev.kt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/about/modules/AboutLinks.kt b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/about/modules/AboutLinks.kt index f935ae9b..8ee59807 100644 --- a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/about/modules/AboutLinks.kt +++ b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/about/modules/AboutLinks.kt @@ -15,5 +15,4 @@ object AboutLinks { const val URL_DEV_DISCORD = "https://discord.gg/8BQrfyA" const val URL_DEV_MEDIUM = "https://yasandev.medium.com" const val URL_DEV_TWITTER_EN = "https://twitter.com/YASAN" - const val URL_DEV_TWITTER_FA = "https://twitter.com/YASANfa" } diff --git a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/about/modules/dev/AboutSegmentDev.kt b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/about/modules/dev/AboutSegmentDev.kt index 1382cb60..c2a3b2bb 100644 --- a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/about/modules/dev/AboutSegmentDev.kt +++ b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/about/modules/dev/AboutSegmentDev.kt @@ -58,7 +58,7 @@ fun AboutSegmentDev(fontFamily: FontFamily = LocaleHelper.properFontFamily) { AboutLinkButton( icon = AboutIcons.twitterIcon(), - url = if (LocaleHelper.isFarsi) AboutLinks.URL_DEV_TWITTER_FA else AboutLinks.URL_DEV_TWITTER_EN, + url = AboutLinks.URL_DEV_TWITTER_EN, contentDescription = stringResource( id = R.string.twitter ), From a13fac139ff5dc25a46b086396ff53fe293132ec Mon Sep 17 00:00:00 2001 From: YASAN Date: Mon, 9 May 2022 00:14:57 +0430 Subject: [PATCH 08/14] Update tehro.db --- app/src/main/assets/tehro.db | Bin 139264 -> 139264 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/app/src/main/assets/tehro.db b/app/src/main/assets/tehro.db index 15196e7105be26b42a60d7b0a9a52662fee6653d..9a7b5efb5568ba0c628efeb9b8c25959e30a65b5 100644 GIT binary patch delta 5592 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 delta 1059 zcmYjQZ)j6j6ucr%h^2XIqJy4|R6cuDap0Meq-ZTfnZb(~8#O z5d1GywslmE_98Mizvz%*8;325vM@vu5w!F}s*EY9AC!HVXwptlPo4|(!{vAG{hf2q zIlpu7ft+w4CmhqH1Rye?%;kcKs1WjFuw&Q6s#ct|43n{hcu|52>C39lYg zsV!$M+0k+5Jz7x4AxGaT=TuPlOHfDJs7PQFzmLA9ca$rNp(Nzj@(uZn+$Fcm8Xc1U zlm?}ZlI|=xC!L3#OP!kInd5?^-|?9v=HTp;_A_?F?iF8&m&74)o47&@2nAtWI3@H8 zZGzW!(e^1{kP7@|+QF~l!`2tpYgDw>S|%;SmWppIN$we!<+gJ3pa@stbY{M~o3(gg zIcxPo3;Run#p?VHnaoX6TIx*@MZ*3HLrv!PXhOB_B8%$F3_7sf46V&1vdtBtgQ`rb z^l}hVI|PUzoUDY!2=^;tA%e{XOAy*!(1!4X3l<>cT(A;Ba>F8oHaFBGYq~ojyYj!HhiHHvxk?8Q5lI`$8G;`w0JobkVD)D&22Q>(foe)xEeKOJGWtnj{F+aqS{M>Jb zZt+8PW?-y|UH6-z_xun=_NBk1B3t{CRRsaA1 From b5c132f188eafca27476cd11d0547617b5c91927 Mon Sep 17 00:00:00 2001 From: YASAN Date: Mon, 9 May 2022 00:21:27 +0430 Subject: [PATCH 09/14] Minor code quality improvements --- .../composable/screen/about/AboutScreen.kt | 8 ++++---- .../composable/screen/home/HomeScreen.kt | 11 +++++++---- .../composable/screen/line/LineScreen.kt | 14 +++++++------- .../composable/screen/map/MapScreen.kt | 4 ++-- .../composable/screen/search/SearchScreen.kt | 9 +++++---- .../composable/screen/station/StationScreen.kt | 4 ++-- 6 files changed, 27 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/about/AboutScreen.kt b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/about/AboutScreen.kt index 32e7332a..ac2a3a3f 100644 --- a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/about/AboutScreen.kt +++ b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/about/AboutScreen.kt @@ -33,9 +33,9 @@ fun AboutScreen( aboutViewModel: AboutViewModel ) { - val databaseInformation = aboutViewModel.databaseInformation.observeAsState() - val stats = aboutViewModel.stats.observeAsState() - val statsComplex = aboutViewModel.statsComplex.observeAsState() + val databaseInformation = aboutViewModel.databaseInformation.observeAsState(initial = Resource.Initial()) + val stats = aboutViewModel.stats.observeAsState(initial = Resource.Initial()) + val statsComplex = aboutViewModel.statsComplex.observeAsState(initial = Resource.Initial()) TehScreen( title = stringResource(id = R.string.about), @@ -61,7 +61,7 @@ fun AboutScreen( item { SegmentStats( statsResource = stats.value, - databaseInformation = databaseInformation.value?.data + databaseInformation = databaseInformation.value.data ) Spacer(modifier = Modifier.requiredHeight(grid(2))) } diff --git a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/home/HomeScreen.kt b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/home/HomeScreen.kt index 2a47b23e..4bca7795 100644 --- a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/home/HomeScreen.kt +++ b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/home/HomeScreen.kt @@ -8,6 +8,7 @@ import androidx.compose.material.icons.sharp.Info import androidx.compose.material.icons.sharp.Map import androidx.compose.material.icons.sharp.Search import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.livedata.observeAsState import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource @@ -39,10 +40,12 @@ fun HomeScreen( navController: NavController ) { - val lines = homeViewModel.lines.observeAsState() + val lines = homeViewModel.lines.observeAsState(initial = Resource.Initial()) - if (lines.value is Resource.Initial) { - homeViewModel.loadLines() + LaunchedEffect(key1 = lines.value) { + if (lines.value is Resource.Initial) { + homeViewModel.loadLines() + } } TehScreen( @@ -66,7 +69,7 @@ fun HomeScreen( } is Resource.Success -> { - val list = lines.value?.data ?: ArrayList() + val list = lines.value.data ?: ArrayList() item { Spacer(modifier = Modifier.requiredHeight(grid())) diff --git a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/line/LineScreen.kt b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/line/LineScreen.kt index 9a5d1a16..f253c007 100644 --- a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/line/LineScreen.kt +++ b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/line/LineScreen.kt @@ -49,11 +49,11 @@ fun LineScreen( lineId: Int, ) { - val title = lineViewModel.title.observeAsState() - val lineColor = lineViewModel.lineColor.observeAsState() - val stations = lineViewModel.stations.observeAsState() + val title = lineViewModel.title.observeAsState(initial = "") + val lineColor = lineViewModel.lineColor.observeAsState(initial = Color.DarkGray) + val stations = lineViewModel.stations.observeAsState(initial = Resource.Initial()) - rememberSystemUiController().setStatusBarColor(color = lineColor.value ?: Color.DarkGray) + rememberSystemUiController().setStatusBarColor(color = lineColor.value) val orderAscending = rememberSaveable { mutableStateOf(true) } @@ -66,8 +66,8 @@ fun LineScreen( val buttonAngle by animateFloatAsState(if (orderAscending.value) 180f else 0f) TehScreen( - title = title.value ?: "", - color = lineColor.value ?: Color.DarkGray, + title = title.value, + color = lineColor.value, action = Action( iconModifier = Modifier.rotate(buttonAngle), icon = TehroIcons.SwapVert, @@ -88,7 +88,7 @@ fun LineScreen( } is Resource.Success -> { - val list = stations.value?.data ?: ArrayList() + val list = stations.value.data ?: ArrayList() val stationCount = list.size diff --git a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/map/MapScreen.kt b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/map/MapScreen.kt index 5024a60f..528fa4ef 100644 --- a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/map/MapScreen.kt +++ b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/map/MapScreen.kt @@ -36,7 +36,7 @@ private const val TAG = "MapScreen" @Composable fun MapScreen(mapViewModel: MapViewModel) { - val isLoaded = mapViewModel.isLoaded.observeAsState() + val isLoaded = mapViewModel.isLoaded.observeAsState(initial = false) class MapEventListener : SubsamplingScaleImageView.OnImageEventListener { @@ -94,7 +94,7 @@ fun MapScreen(mapViewModel: MapViewModel) { ) androidx.compose.animation.AnimatedVisibility( - visible = isLoaded.value != true, + visible = !isLoaded.value, enter = fadeIn(), exit = fadeOut() ) { diff --git a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/search/SearchScreen.kt b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/search/SearchScreen.kt index 6ae5b24c..efb0e630 100644 --- a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/search/SearchScreen.kt +++ b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/search/SearchScreen.kt @@ -20,6 +20,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.navigation.NavController import dev.yasan.kit.compose.foundation.grid +import dev.yasan.kit.core.Resource import dev.yasan.metro.tehran.R import dev.yasan.metro.tehran.model.misc.LaunchSource import dev.yasan.metro.tehran.model.tehro.Line @@ -45,10 +46,10 @@ fun SearchScreen(viewModel: SearchViewModel, navController: NavController) { val queryState = rememberSaveable { mutableStateOf("") } val groupEnabled = rememberSaveable { mutableStateOf(true) } - val results = viewModel.results.observeAsState() - val loading = viewModel.loading.observeAsState() + val results = viewModel.results.observeAsState(initial = Resource.Initial()) + val loading = viewModel.loading.observeAsState(initial = true) - val resultsList = results.value?.data ?: emptyList() + val resultsList = results.value.data ?: emptyList() TehScreen(title = stringResource(id = R.string.search)) { @@ -79,7 +80,7 @@ fun SearchScreen(viewModel: SearchViewModel, navController: NavController) { item { AnimatedVisibility( - visible = loading.value == true, + visible = loading.value, enter = expandVertically() + fadeIn(), exit = shrinkVertically() + fadeOut() ) { diff --git a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/station/StationScreen.kt b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/station/StationScreen.kt index 834b239b..a1e0a83a 100644 --- a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/station/StationScreen.kt +++ b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/station/StationScreen.kt @@ -22,7 +22,7 @@ fun StationScreen( stationViewModel.loadStation(stationId = stationId) } - val stationResource = stationViewModel.station.observeAsState() + val stationResource = stationViewModel.station.observeAsState(initial = Resource.Initial()) when (stationResource.value) { is Resource.Initial -> { @@ -34,7 +34,7 @@ fun StationScreen( } } is Resource.Success -> { - val station = stationResource.value!!.data!! + val station = stationResource.value.data!! StationScreenSuccess( station = station, navController = navController, From d934bc45503201b2c2062e2d0e44af3437e527d4 Mon Sep 17 00:00:00 2001 From: YASAN Date: Mon, 9 May 2022 20:51:41 +0430 Subject: [PATCH 10/14] Add state param to TehScreen --- .../tehran/presentation/composable/common/teh/TehScreen.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/common/teh/TehScreen.kt b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/common/teh/TehScreen.kt index 70ed886b..67e8e75f 100644 --- a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/common/teh/TehScreen.kt +++ b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/common/teh/TehScreen.kt @@ -7,6 +7,8 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListScope +import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -30,6 +32,7 @@ fun TehScreen( color: Color = colorResource(id = R.color.layer_foreground), fontFamily: FontFamily = LocaleHelper.properFontFamily, action: Action? = null, + state: LazyListState = rememberLazyListState(), content: LazyListScope.() -> Unit ) { @@ -51,6 +54,7 @@ fun TehScreen( .animateContentSize() .fillMaxWidth() .weight(1f), + state = state, horizontalAlignment = Alignment.CenterHorizontally ) { From 04bfc45d410329b6aab4f6b44d76a18001a32faa Mon Sep 17 00:00:00 2001 From: YASAN Date: Mon, 9 May 2022 20:58:34 +0430 Subject: [PATCH 11/14] Allow showing multiple actions on TehTitle --- .../composable/common/teh/TehScreen.kt | 4 ++-- .../composable/common/teh/TehTitle.kt | 8 ++++---- .../composable/screen/home/HomeScreen.kt | 17 ++++++++++------- .../composable/screen/line/LineScreen.kt | 16 +++++++++------- 4 files changed, 25 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/common/teh/TehScreen.kt b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/common/teh/TehScreen.kt index 67e8e75f..08cec6cd 100644 --- a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/common/teh/TehScreen.kt +++ b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/common/teh/TehScreen.kt @@ -31,7 +31,7 @@ fun TehScreen( title: String, color: Color = colorResource(id = R.color.layer_foreground), fontFamily: FontFamily = LocaleHelper.properFontFamily, - action: Action? = null, + actions: List = emptyList(), state: LazyListState = rememberLazyListState(), content: LazyListScope.() -> Unit ) { @@ -46,7 +46,7 @@ fun TehScreen( title = title, colorBackground = color, fontFamily = fontFamily, - action = action + actions = actions ) LazyColumn( diff --git a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/common/teh/TehTitle.kt b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/common/teh/TehTitle.kt index 167badc8..547a589f 100644 --- a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/common/teh/TehTitle.kt +++ b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/common/teh/TehTitle.kt @@ -44,7 +44,7 @@ fun TehTitle( fontFamily: FontFamily = LocaleHelper.properFontFamily, colorBackground: Color = colorResource(id = R.color.layer_foreground), colorText: Color = colorBackground.getTextOnColor(), - action: Action? = null, + actions: List = emptyList(), ) { Column( modifier = modifier.fillMaxWidth() @@ -66,15 +66,15 @@ fun TehTitle( color = colorText, textAlign = TextAlign.Start ) - action?.let { + actions.reversed().forEach { action -> Icon( modifier = action.iconModifier .padding(grid()) .clip(CircleShape) .clickable(onClick = action.onClick) .padding(grid()), - imageVector = it.icon, - contentDescription = it.text, + imageVector = action.icon, + contentDescription = action.text, tint = colorText ) } diff --git a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/home/HomeScreen.kt b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/home/HomeScreen.kt index 4bca7795..9a614e8a 100644 --- a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/home/HomeScreen.kt +++ b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/home/HomeScreen.kt @@ -5,6 +5,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.requiredHeight import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.sharp.Info +import androidx.compose.material.icons.sharp.LocalBar import androidx.compose.material.icons.sharp.Map import androidx.compose.material.icons.sharp.Search import androidx.compose.runtime.Composable @@ -50,13 +51,15 @@ fun HomeScreen( TehScreen( title = stringResource(id = R.string.app_name), - action = Action( - icon = TehroIcons.Search, - onClick = { - Navigator.navigateToSearch(navController = navController) - }, - text = stringResource(id = R.string.search) - ), + actions = listOf( + Action( + icon = TehroIcons.Search, + onClick = { + Navigator.navigateToSearch(navController = navController) + }, + text = stringResource(id = R.string.search) + ) + ) ) { when (lines.value) { diff --git a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/line/LineScreen.kt b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/line/LineScreen.kt index f253c007..ef4abbbb 100644 --- a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/line/LineScreen.kt +++ b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/line/LineScreen.kt @@ -68,13 +68,15 @@ fun LineScreen( TehScreen( title = title.value, color = lineColor.value, - action = Action( - iconModifier = Modifier.rotate(buttonAngle), - icon = TehroIcons.SwapVert, - text = "", - onClick = { - orderAscending.value = !orderAscending.value - } + actions = listOf( + Action( + iconModifier = Modifier.rotate(buttonAngle), + icon = TehroIcons.SwapVert, + text = "", + onClick = { + orderAscending.value = !orderAscending.value + } + ) ) ) { From 8439cee5263200c40c45dafd5852e0b62ab629c8 Mon Sep 17 00:00:00 2001 From: YASAN Date: Thu, 12 May 2022 20:40:47 +0430 Subject: [PATCH 12/14] Improve how station locations are launched --- .../screen/station/modules/StationScreenSuccess.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/station/modules/StationScreenSuccess.kt b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/station/modules/StationScreenSuccess.kt index ae950242..e70670f5 100644 --- a/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/station/modules/StationScreenSuccess.kt +++ b/app/src/main/java/dev/yasan/metro/tehran/presentation/composable/screen/station/modules/StationScreenSuccess.kt @@ -126,8 +126,10 @@ fun StationScreenSuccess( colorBorder = colorResource(id = R.color.text_title), onClick = { - val uri = "geo:${station.locationLatitude},${station.locationLongitude}" - val intent = Intent(Intent.ACTION_VIEW, Uri.parse(uri)) + val intent = Intent( + Intent.ACTION_VIEW, + Uri.parse("geo:${station.locationLatitude},${station.locationLongitude}?q=${station.locationLatitude},${station.locationLongitude}(${station.name})") + ) try { context.startActivity(intent) From 896cb62a5e889f903b061df75b1941cec02a1324 Mon Sep 17 00:00:00 2001 From: YASAN Date: Thu, 12 May 2022 20:49:17 +0430 Subject: [PATCH 13/14] Update changelog --- CHANGELOG.md | 6 ++++++ fastlane/metadata/android/en-US/changelogs/233.txt | 3 +++ 2 files changed, 9 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/233.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index af4ae697..5861c66c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Tehro Changelog +## v2.3.3 + +- Added almost all of the missing station locations. +- Improved how station locations are launched on supported map apps. +- Updated social links. + ## v2.3.2 - The search button is now moved to the top of the screen. diff --git a/fastlane/metadata/android/en-US/changelogs/233.txt b/fastlane/metadata/android/en-US/changelogs/233.txt new file mode 100644 index 00000000..229d78cc --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/233.txt @@ -0,0 +1,3 @@ +- Added almost all of the missing station locations. +- Improved how station locations are launched on supported map apps. +- Updated social links. From 1b7b97735178d062588486ffdbbd020cb922d906 Mon Sep 17 00:00:00 2001 From: YASAN Date: Thu, 12 May 2022 20:49:53 +0430 Subject: [PATCH 14/14] Bump version to 2.3.3 (233) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 77a4e830..f4fd2d42 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { minSdk 21 targetSdk 31 - versionCode 232 - versionName "2.3.2" + versionCode 233 + versionName "2.3.3" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables {