Skip to content

Commit 59b4f25

Browse files
committed
Fix lint errors
1 parent 8c52895 commit 59b4f25

File tree

11 files changed

+114
-117
lines changed

11 files changed

+114
-117
lines changed

app-watch/app/src/androidTest/java/ir/composenews/ui/MainActivityTest.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,22 @@ import org.junit.Rule
1010
import org.junit.Test
1111

1212
class MainActivityTest {
13-
1413
@get:Rule
1514
val composeTestRule = createAndroidComposeRule<MainActivity>()
1615

1716
@Test
1817
fun marketListScreen_DisplayedCorrectly() {
19-
2018
composeTestRule.waitUntil(timeoutMillis = 5_000) {
2119
composeTestRule.onAllNodesWithText("BNB").fetchSemanticsNodes().isNotEmpty() ||
22-
composeTestRule.onAllNodesWithText("BTC").fetchSemanticsNodes().isNotEmpty()
20+
composeTestRule.onAllNodesWithText("BTC").fetchSemanticsNodes().isNotEmpty()
2321
}
2422

2523
composeTestRule.onNodeWithText("BNB").assertExists()
26-
composeTestRule.onNodeWithText("Bitcoin").assertExists().onParent().performClick()
24+
composeTestRule
25+
.onNodeWithText("Bitcoin")
26+
.assertExists()
27+
.onParent()
28+
.performClick()
2729
composeTestRule.onNodeWithContentDescription("Loading. PLease wait").assertExists()
28-
29-
3030
}
3131
}

app-watch/app/src/main/java/ir/composenews/MainViewModel.kt

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,28 @@ import kotlinx.coroutines.launch
1313
import javax.inject.Inject
1414

1515
@HiltViewModel
16-
class MainViewModel @Inject constructor(
17-
dispatcherProvider: DispatcherProvider,
18-
) : BaseViewModel(dispatcherProvider), MainContract {
16+
class MainViewModel
17+
@Inject
18+
constructor(
19+
dispatcherProvider: DispatcherProvider,
20+
) : BaseViewModel(dispatcherProvider),
21+
MainContract {
22+
private val mutableState = MutableStateFlow(MainContract.State())
1923

20-
private val mutableState = MutableStateFlow(MainContract.State())
21-
override val state: StateFlow<MainContract.State> = mutableState.asStateFlow()
22-
override fun event(event: MainContract.Event) {
23-
when (event) {
24-
is MainContract.Event.SetMarket -> setMarket(event.market)
24+
override val state: StateFlow<MainContract.State> = mutableState.asStateFlow()
25+
26+
override fun event(event: MainContract.Event) {
27+
when (event) {
28+
is MainContract.Event.SetMarket -> setMarket(event.market)
29+
}
2530
}
26-
}
2731

28-
private fun setMarket(market: MarketModel?) = viewModelScope.launch {
29-
mutableState.emit(
30-
mutableState.value.copy(
31-
market
32-
)
33-
)
32+
private fun setMarket(market: MarketModel?) =
33+
viewModelScope.launch {
34+
mutableState.emit(
35+
mutableState.value.copy(
36+
market,
37+
),
38+
)
39+
}
3440
}
35-
}

app-watch/app/src/main/java/ir/composenews/navigation/ComposeNewsWearNavHost.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ import ir.composenews.appwatch.navigation.graph.wearMarketList
1111
import ir.composenews.uimarket.model.MarketModel
1212

1313
@Composable
14+
@Suppress("ktlint:standard:function-naming")
1415
fun ComposeNewsWearNavHost(
1516
navController: NavHostController,
1617
modifier: Modifier,
1718
onMarketSelected: ((MarketModel) -> Unit)? = null,
18-
uiState: MainContract.State
19+
uiState: MainContract.State,
1920
) {
2021
SwipeDismissableNavHost(
2122
navController = navController,

app-watch/app/src/main/java/ir/composenews/ui/MainActivity.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,13 @@ import com.google.android.horologist.compose.layout.AppScaffold
1515
import com.google.android.horologist.compose.layout.ScreenScaffold
1616
import dagger.hilt.android.AndroidEntryPoint
1717
import ir.composenews.MainViewModel
18-
import ir.composenews.appwatch.navigation.graph.Destinations
1918
import ir.composenews.appwatch.navigation.MainContract
19+
import ir.composenews.appwatch.navigation.graph.Destinations
2020
import ir.composenews.designsystem.theme.ComposeNewsTheme
2121
import ir.composenews.navigation.ComposeNewsWearNavHost
2222

2323
@AndroidEntryPoint
2424
class MainActivity : ComponentActivity() {
25-
2625
private val mainViewModel: MainViewModel by viewModels()
2726

2827
override fun onCreate(savedInstanceState: Bundle?) {
@@ -33,6 +32,7 @@ class MainActivity : ComponentActivity() {
3332
}
3433

3534
@Composable
35+
@Suppress("ktlint:standard:function-naming")
3636
fun WearApp() {
3737
val navController = rememberSwipeDismissableNavController()
3838
val state = mainViewModel.state.collectAsStateWithLifecycle()
@@ -46,7 +46,7 @@ class MainActivity : ComponentActivity() {
4646
navController.navigate(Destinations.MarketDetailScreen().route)
4747
},
4848
uiState = state.value,
49-
modifier = Modifier
49+
modifier = Modifier,
5050
)
5151
}
5252
}
@@ -55,6 +55,7 @@ class MainActivity : ComponentActivity() {
5555

5656
@Preview(device = WearDevices.LARGE_ROUND, showSystemUi = true)
5757
@Composable
58+
@Suppress("ktlint:standard:function-naming")
5859
fun DefaultPreview() {
5960
WearApp()
6061
}

app/src/main/java/ir/composenews/ComposeNewsApplication.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@ import ir.composenews.sync.Sync
66

77
@HiltAndroidApp
88
class ComposeNewsApplication : Application() {
9-
109
override fun onCreate() {
1110
super.onCreate()
1211
Sync.init(this)
1312
}
14-
1513
}

app/src/main/java/ir/composenews/permission/handler/NotificationPermissionHandler.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,7 @@ class NotificationPermissionHandler : PermissionHandler {
1515

1616
override val permissionType: PermissionType = PermissionType.POST_NOTIFICATIONS
1717

18-
override fun hasPermission(
19-
context: Context
20-
): Boolean =
18+
override fun hasPermission(context: Context): Boolean =
2119
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
2220
NotificationManagerCompat.from(context).areNotificationsEnabled()
2321
} else {
@@ -30,11 +28,9 @@ class NotificationPermissionHandler : PermissionHandler {
3028
callback: (isGranted: Boolean) -> Unit,
3129
): ActivityResultLauncher<String> = super.permissionLauncher(activity, callback)
3230

33-
3431
@RequiresApi(Build.VERSION_CODES.TIRAMISU)
3532
override fun requestPermission(
3633
activity: ComponentActivity,
3734
callback: (isGranted: Boolean) -> Unit,
38-
): Unit? =
39-
super.requestPermission(activity, callback)
35+
): Unit? = super.requestPermission(activity, callback)
4036
}

app/src/main/java/ir/composenews/permission/handler/PermissionHandler.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import androidx.activity.result.contract.ActivityResultContracts
77
import ir.composenews.permission.enum.PermissionType
88

99
interface PermissionHandler {
10-
1110
val permission: String
1211
val permissionType: PermissionType
1312

@@ -16,26 +15,27 @@ interface PermissionHandler {
1615
fun permissionLauncher(
1716
activity: ComponentActivity,
1817
callback: (isGranted: Boolean) -> Unit,
19-
): ActivityResultLauncher<String> = activity.registerForActivityResult(
20-
ActivityResultContracts.RequestPermission()
21-
) { isGranted ->
22-
callback(isGranted)
23-
}
18+
): ActivityResultLauncher<String> =
19+
activity.registerForActivityResult(
20+
ActivityResultContracts.RequestPermission(),
21+
) { isGranted ->
22+
callback(isGranted)
23+
}
2424

2525
fun requestPermission(
2626
activity: ComponentActivity,
2727
callback: (isGranted: Boolean) -> Unit,
28-
): Unit? =
29-
permissionLauncher(activity, callback).launch(permission)
28+
): Unit? = permissionLauncher(activity, callback).launch(permission)
3029

3130
fun performPermission(
3231
context: Context,
3332
activity: ComponentActivity,
3433
callback: (isGranted: Boolean) -> Unit,
3534
) {
36-
if (hasPermission(context))
35+
if (hasPermission(context)) {
3736
callback(true)
38-
else
37+
} else {
3938
requestPermission(activity, callback)
39+
}
4040
}
4141
}

app/src/main/java/ir/composenews/permission/handler/ReadStoragePermissionHandler.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@ class ReadStoragePermissionHandler : PermissionHandler {
1111

1212
override val permissionType: PermissionType = PermissionType.READ_EXTERNAL_STORAGE
1313

14-
override fun hasPermission(
15-
context: Context
16-
): Boolean =
14+
override fun hasPermission(context: Context): Boolean =
1715
ContextCompat.checkSelfPermission(
1816
context,
1917
permission,

app/src/main/java/ir/composenews/permission/manager/PermissionManagerImpl.kt

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,22 @@ import ir.composenews.permission.handler.PermissionHandler
88
import ir.composenews.permission.handler.ReadStoragePermissionHandler
99

1010
class PermissionManagerImpl : PermissionManager {
11-
private fun getPermissionHandler(
12-
permission: PermissionType
13-
): PermissionHandler =
11+
private fun getPermissionHandler(permission: PermissionType): PermissionHandler =
1412
when (permission) {
1513
PermissionType.POST_NOTIFICATIONS -> NotificationPermissionHandler()
1614
PermissionType.READ_EXTERNAL_STORAGE -> ReadStoragePermissionHandler()
1715
}
1816

1917
override fun hasPermission(
2018
permission: PermissionType,
21-
context: Context
22-
): Boolean =
23-
getPermissionHandler(permission).hasPermission(context)
19+
context: Context,
20+
): Boolean = getPermissionHandler(permission).hasPermission(context)
2421

2522
override fun requestPermission(
2623
permission: PermissionType,
2724
activity: ComponentActivity,
2825
callback: (isGranted: Boolean) -> Unit,
29-
): Unit? =
30-
getPermissionHandler(permission).requestPermission(activity, callback)
31-
26+
): Unit? = getPermissionHandler(permission).requestPermission(activity, callback)
3227

3328
override fun performPermission(
3429
permission: PermissionType,
Lines changed: 45 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
@file:Suppress("ktlint:standard:function-naming")
2+
13
package ir.composenews.ui
24

5+
import androidx.compose.foundation.layout.PaddingValues
36
import androidx.compose.foundation.layout.padding
47
import androidx.compose.material.icons.Icons
58
import androidx.compose.material.icons.filled.Favorite
@@ -9,6 +12,7 @@ import androidx.compose.material3.Scaffold
912
import androidx.compose.material3.Text
1013
import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi
1114
import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo
15+
import androidx.compose.material3.adaptive.navigation.ThreePaneScaffoldNavigator
1216
import androidx.compose.material3.adaptive.navigation.rememberListDetailPaneScaffoldNavigator
1317
import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteScaffold
1418
import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteScaffoldDefaults
@@ -21,17 +25,43 @@ import androidx.compose.ui.Modifier
2125
import ir.composenews.navigation.BottomNavItem
2226
import ir.composenews.navigation.Destinations
2327
import ir.composenews.navigation.graph.ListWithDetailScreen
28+
import kotlinx.collections.immutable.ImmutableList
2429
import kotlinx.collections.immutable.persistentListOf
2530

2631
@OptIn(ExperimentalMaterial3AdaptiveApi::class)
2732
@Composable
2833
fun ComposeNewsApp() {
29-
val items = remember {
34+
val items = rememberNavigationItems()
35+
var currentRoute by remember { mutableStateOf(Destinations.MarketListScreen.route) }
36+
37+
Scaffold { paddingValues ->
38+
NavigationSuiteScaffold(
39+
navigationSuiteItems = {
40+
items.forEach { item ->
41+
item(
42+
selected = item.route == currentRoute,
43+
onClick = { currentRoute = item.route },
44+
icon = { Icon(imageVector = item.icon, contentDescription = item.name) },
45+
label = { Text(text = item.name) },
46+
)
47+
}
48+
},
49+
layoutType = NavigationSuiteScaffoldDefaults.calculateFromAdaptiveInfo(currentWindowAdaptiveInfo()),
50+
) {
51+
val navigator = rememberListDetailPaneScaffoldNavigator<Any>()
52+
NavigationContent(currentRoute, paddingValues, navigator)
53+
}
54+
}
55+
}
56+
57+
@Composable
58+
private fun rememberNavigationItems(): ImmutableList<BottomNavItem> =
59+
remember {
3060
persistentListOf(
3161
BottomNavItem(
3262
name = "Markets",
3363
route = Destinations.MarketListScreen.route,
34-
icon = Icons.Default.Home
64+
icon = Icons.Default.Home,
3565
),
3666
BottomNavItem(
3767
name = "Favorite",
@@ -41,48 +71,20 @@ fun ComposeNewsApp() {
4171
)
4272
}
4373

44-
var currentRoute by remember { mutableStateOf(Destinations.MarketListScreen.route) }
45-
46-
Scaffold { paddingValues ->
47-
NavigationSuiteScaffold(
48-
navigationSuiteItems = {
49-
items.forEach { item ->
50-
item(selected = item.route == currentRoute, onClick = {
51-
currentRoute = item.route
52-
}, icon = {
53-
Icon(
54-
imageVector = item.icon,
55-
contentDescription = item.name,
56-
)
57-
}, label = {
58-
Text(
59-
text = item.name,
60-
)
61-
})
62-
}
63-
},
64-
layoutType = NavigationSuiteScaffoldDefaults.calculateFromAdaptiveInfo(
65-
currentWindowAdaptiveInfo()
66-
)
67-
) {
68-
val navigator = rememberListDetailPaneScaffoldNavigator<Any>()
69-
when (currentRoute) {
70-
Destinations.MarketListScreen.route -> {
71-
ListWithDetailScreen(
72-
Modifier.padding(paddingValues),
73-
navigator,
74-
showFavorite = false,
75-
)
76-
}
74+
@OptIn(ExperimentalMaterial3AdaptiveApi::class)
75+
@Composable
76+
private fun NavigationContent(
77+
currentRoute: String,
78+
paddingValues: PaddingValues,
79+
navigator: ThreePaneScaffoldNavigator<Any>,
80+
) {
81+
when (currentRoute) {
82+
Destinations.MarketListScreen.route -> {
83+
ListWithDetailScreen(Modifier.padding(paddingValues), navigator, showFavorite = false)
84+
}
7785

78-
Destinations.FavoriteMarketScreen.route -> {
79-
ListWithDetailScreen(
80-
Modifier.padding(paddingValues),
81-
navigator,
82-
showFavorite = true,
83-
)
84-
}
85-
}
86+
Destinations.FavoriteMarketScreen.route -> {
87+
ListWithDetailScreen(Modifier.padding(paddingValues), navigator, showFavorite = true)
8688
}
8789
}
8890
}

0 commit comments

Comments
 (0)