Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
TeamPrinterV2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Aleksandr
TeamPrinterV2
Commits
d4478719
Commit
d4478719
authored
Jul 09, 2024
by
Aleksandr
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Open a spot on the map from the job list
parent
d7e060c1
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
46 additions
and
10 deletions
+46
-10
app/src/main/java/com/isidroid/c23/domain/dto/PrintJobListItem.kt
+1
-0
app/src/main/java/com/isidroid/c23/domain/use_case/PrintJobsUseCase.kt
+9
-3
app/src/main/java/com/isidroid/c23/ui/navigation/destinations/PrintJobsScreenDestination.kt
+4
-0
app/src/main/java/com/isidroid/c23/ui/screen/print_jobs/PrintJobsContract.kt
+2
-0
app/src/main/java/com/isidroid/c23/ui/screen/print_jobs/PrintJobsScreen.kt
+3
-2
app/src/main/java/com/isidroid/c23/ui/screen/print_jobs/PrintJobsViewModel.kt
+22
-0
core/core/src/main/java/com/isidroid/core/ext/ExtNavigation.kt
+5
-5
No files found.
app/src/main/java/com/isidroid/c23/domain/dto/PrintJobListItem.kt
View file @
d4478719
...
@@ -6,6 +6,7 @@ import java.util.Date
...
@@ -6,6 +6,7 @@ import java.util.Date
data class
PrintJobListItem
(
data class
PrintJobListItem
(
val
id
:
String
,
val
id
:
String
,
val
spotName
:
String
,
val
spotName
:
String
,
val
spotCode
:
String
?,
val
cost
:
Float
,
val
cost
:
Float
,
val
paperInfo
:
String
,
val
paperInfo
:
String
,
val
isColor
:
Boolean
,
val
isColor
:
Boolean
,
...
...
app/src/main/java/com/isidroid/c23/domain/use_case/PrintJobsUseCase.kt
View file @
d4478719
package
com.isidroid.c23.domain.use_case
package
com.isidroid.c23.domain.use_case
import
android.content.Context
import
android.content.Context
import
androidx.compose.ui.graphics.Color
import
com.isidroid.c23.domain.dto.PrintJobListItem
import
com.isidroid.c23.domain.dto.PrintJobListItem
import
com.isidroid.c23.ext.getPrintJobStatus
import
com.isidroid.c23.ext.getPrintJobStatus
import
com.isidroid.c23.ext.getPrintJobStatusColor
import
com.isidroid.c23.ext.getPrintJobStatusColor
import
com.isidroid.core.FlowResult
import
com.isidroid.core.FlowResult
import
com.isidroid.job.constant.jobStatusName
import
com.isidroid.job.repository.JobRepository
import
com.isidroid.job.repository.JobRepository
import
com.isidroid.rendering.constant.printSizeName
import
com.isidroid.rendering.constant.printSizeName
import
com.isidroid.spot.repository.SpotRepository
import
com.isidroid.spot.repository.SpotRepository
...
@@ -37,6 +35,7 @@ class PrintJobsUseCase @Inject constructor(
...
@@ -37,6 +35,7 @@ class PrintJobsUseCase @Inject constructor(
PrintJobListItem
(
PrintJobListItem
(
id
=
job
.
id
,
id
=
job
.
id
,
spotCode
=
richSpot
?.
spot
?.
code
,
spotName
=
richSpot
?.
spot
?.
name
?:
"Deleted spot"
,
spotName
=
richSpot
?.
spot
?.
name
?:
"Deleted spot"
,
cost
=
job
.
cost
,
cost
=
job
.
cost
,
paperInfo
=
job
.
printSize
.
printSizeName
,
paperInfo
=
job
.
printSize
.
printSizeName
,
...
@@ -47,10 +46,16 @@ class PrintJobsUseCase @Inject constructor(
...
@@ -47,10 +46,16 @@ class PrintJobsUseCase @Inject constructor(
cover
=
job
.
sourceFiles
?.
firstOrNull
()
?.
takeIf
{
File
(
it
).
exists
()
},
cover
=
job
.
sourceFiles
?.
firstOrNull
()
?.
takeIf
{
File
(
it
).
exists
()
},
statusName
=
context
.
getString
(
getPrintJobStatus
(
job
.
status
)),
statusName
=
context
.
getString
(
getPrintJobStatus
(
job
.
status
)),
accessCode
=
job
.
accessCode
.
orEmpty
(),
accessCode
=
job
.
accessCode
.
orEmpty
(),
createdAt
=
job
.
createdAt
createdAt
=
job
.
createdAt
,
)
)
}
}
emit
(
FlowResult
.
Success
(
result
))
emit
(
FlowResult
.
Success
(
result
))
}
}
fun
findSpot
(
spotCode
:
String
)
=
flow
{
emit
(
FlowResult
.
Loading
)
val
result
=
spotRepository
.
findRichSpot
(
spotCode
)
?.
spot
emit
(
FlowResult
.
Success
(
result
))
}
}
}
\ No newline at end of file
app/src/main/java/com/isidroid/c23/ui/navigation/destinations/PrintJobsScreenDestination.kt
View file @
d4478719
...
@@ -3,10 +3,13 @@ package com.isidroid.c23.ui.navigation.destinations
...
@@ -3,10 +3,13 @@ package com.isidroid.c23.ui.navigation.destinations
import
androidx.compose.runtime.Composable
import
androidx.compose.runtime.Composable
import
androidx.hilt.navigation.compose.hiltViewModel
import
androidx.hilt.navigation.compose.hiltViewModel
import
androidx.navigation.NavHostController
import
androidx.navigation.NavHostController
import
com.isidroid.c23.ui.navigation.Home
import
com.isidroid.c23.ui.navigation.routeJobDetails
import
com.isidroid.c23.ui.navigation.routeJobDetails
import
com.isidroid.c23.ui.navigation.routeMap
import
com.isidroid.c23.ui.screen.print_jobs.PrintJobsContract
import
com.isidroid.c23.ui.screen.print_jobs.PrintJobsContract
import
com.isidroid.c23.ui.screen.print_jobs.PrintJobsScreen
import
com.isidroid.c23.ui.screen.print_jobs.PrintJobsScreen
import
com.isidroid.c23.ui.screen.print_jobs.PrintJobsViewModel
import
com.isidroid.c23.ui.screen.print_jobs.PrintJobsViewModel
import
com.isidroid.core.ext.navigateSingleTopTo
@Composable
@Composable
fun
PrintJobsScreenDestination
(
navController
:
NavHostController
)
{
fun
PrintJobsScreenDestination
(
navController
:
NavHostController
)
{
...
@@ -20,6 +23,7 @@ fun PrintJobsScreenDestination(navController: NavHostController) {
...
@@ -20,6 +23,7 @@ fun PrintJobsScreenDestination(navController: NavHostController) {
when
(
effect
)
{
when
(
effect
)
{
PrintJobsContract
.
Effect
.
Navigation
.
ToBack
->
navController
.
popBackStack
()
PrintJobsContract
.
Effect
.
Navigation
.
ToBack
->
navController
.
popBackStack
()
is
PrintJobsContract
.
Effect
.
Navigation
.
ToDetails
->
navController
.
navigate
(
routeJobDetails
(
id
=
effect
.
id
))
is
PrintJobsContract
.
Effect
.
Navigation
.
ToDetails
->
navController
.
navigate
(
routeJobDetails
(
id
=
effect
.
id
))
is
PrintJobsContract
.
Effect
.
Navigation
.
ToMap
->
navController
.
navigateSingleTopTo
(
routeMap
(
lat
=
effect
.
lat
.
toString
(),
lng
=
effect
.
lng
.
toString
()),
popupToRoute
=
Home
.
route
)
}
}
},
},
)
)
...
...
app/src/main/java/com/isidroid/c23/ui/screen/print_jobs/PrintJobsContract.kt
View file @
d4478719
...
@@ -9,12 +9,14 @@ class PrintJobsContract {
...
@@ -9,12 +9,14 @@ class PrintJobsContract {
sealed
interface
Event
:
ViewEvent
{
sealed
interface
Event
:
ViewEvent
{
data
object
ToBack
:
Event
data
object
ToBack
:
Event
data class
ToDetails
(
val
id
:
String
)
:
Event
data class
ToDetails
(
val
id
:
String
)
:
Event
data class
ToSpot
(
val
spotCode
:
String
?)
:
Event
}
}
sealed
interface
Effect
:
ViewSideEffect
{
sealed
interface
Effect
:
ViewSideEffect
{
sealed
interface
Navigation
:
Effect
{
sealed
interface
Navigation
:
Effect
{
data
object
ToBack
:
Navigation
data
object
ToBack
:
Navigation
data class
ToDetails
(
val
id
:
String
)
:
Navigation
data class
ToDetails
(
val
id
:
String
)
:
Navigation
data class
ToMap
(
val
lat
:
Double
,
val
lng
:
Double
)
:
Navigation
}
}
}
}
...
...
app/src/main/java/com/isidroid/c23/ui/screen/print_jobs/PrintJobsScreen.kt
View file @
d4478719
...
@@ -43,7 +43,7 @@ fun PrintJobsScreen(
...
@@ -43,7 +43,7 @@ fun PrintJobsScreen(
modifier
=
modifier
.
fillMaxSize
(),
modifier
=
modifier
.
fillMaxSize
(),
topBar
=
{
topBar
=
{
TopAppBarComponent
(
TopAppBarComponent
(
text
=
stringResource
(
id
=
R
.
string
.
print_job_list
),
text
=
stringResource
(
id
=
R
.
string
.
print_job_list
),
colors
=
TopAppBarDefaults
.
topAppBarColors
(),
colors
=
TopAppBarDefaults
.
topAppBarColors
(),
onNavigationClick
=
{
onEventSent
(
PrintJobsContract
.
Event
.
ToBack
)
}
onNavigationClick
=
{
onEventSent
(
PrintJobsContract
.
Event
.
ToBack
)
}
)
)
...
@@ -78,7 +78,8 @@ private fun ListComponent(
...
@@ -78,7 +78,8 @@ private fun ListComponent(
statusColor
=
item
.
statusColor
,
statusColor
=
item
.
statusColor
,
createdAt
=
item
.
createdAt
,
createdAt
=
item
.
createdAt
,
modifier
=
Modifier
.
padding
(
horizontal
=
12
.
dp
,
vertical
=
4
.
dp
),
modifier
=
Modifier
.
padding
(
horizontal
=
12
.
dp
,
vertical
=
4
.
dp
),
clickOnCard
=
{
onEventSent
(
PrintJobsContract
.
Event
.
ToDetails
(
item
.
id
))
}
clickOnCard
=
{
onEventSent
(
PrintJobsContract
.
Event
.
ToDetails
(
item
.
id
))
},
clickOnSpot
=
{
onEventSent
(
PrintJobsContract
.
Event
.
ToSpot
(
item
.
spotCode
))
}
)
)
}
}
}
}
...
...
app/src/main/java/com/isidroid/c23/ui/screen/print_jobs/PrintJobsViewModel.kt
View file @
d4478719
...
@@ -5,6 +5,7 @@ import com.isidroid.c23.domain.use_case.PrintJobsUseCase
...
@@ -5,6 +5,7 @@ import com.isidroid.c23.domain.use_case.PrintJobsUseCase
import
com.isidroid.c23.ext.isDebug
import
com.isidroid.c23.ext.isDebug
import
com.isidroid.core.FlowResult
import
com.isidroid.core.FlowResult
import
com.isidroid.core.vm.BaseViewModel
import
com.isidroid.core.vm.BaseViewModel
import
com.isidroid.spot.model.Spot
import
com.isidroid.utils.catchTimber
import
com.isidroid.utils.catchTimber
import
dagger.hilt.android.lifecycle.HiltViewModel
import
dagger.hilt.android.lifecycle.HiltViewModel
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Dispatchers
...
@@ -26,6 +27,7 @@ class PrintJobsViewModel @Inject constructor(
...
@@ -26,6 +27,7 @@ class PrintJobsViewModel @Inject constructor(
when
(
event
)
{
when
(
event
)
{
PrintJobsContract
.
Event
.
ToBack
->
setEffect
{
PrintJobsContract
.
Effect
.
Navigation
.
ToBack
}
PrintJobsContract
.
Event
.
ToBack
->
setEffect
{
PrintJobsContract
.
Effect
.
Navigation
.
ToBack
}
is
PrintJobsContract
.
Event
.
ToDetails
->
setEffect
{
PrintJobsContract
.
Effect
.
Navigation
.
ToDetails
(
event
.
id
)
}
is
PrintJobsContract
.
Event
.
ToDetails
->
setEffect
{
PrintJobsContract
.
Effect
.
Navigation
.
ToDetails
(
event
.
id
)
}
is
PrintJobsContract
.
Event
.
ToSpot
->
openSpot
(
event
.
spotCode
)
}
}
}
}
...
@@ -41,5 +43,24 @@ class PrintJobsViewModel @Inject constructor(
...
@@ -41,5 +43,24 @@ class PrintJobsViewModel @Inject constructor(
}
}
}
}
}
}
private
suspend
fun
openSpot
(
spotCode
:
String
?)
{
spotCode
?:
return
useCase
.
findSpot
(
spotCode
)
.
flowOn
(
Dispatchers
.
IO
)
.
catchTimber
{
}
.
collect
{
res
->
when
(
res
)
{
FlowResult
.
Loading
->
{}
is
FlowResult
.
Success
->
openSpotOnMap
(
res
.
result
)
}
}
}
// handle callbacks
// handle callbacks
private
fun
openSpotOnMap
(
spot
:
Spot
?)
{
spot
?:
return
setEffect
{
PrintJobsContract
.
Effect
.
Navigation
.
ToMap
(
lat
=
spot
.
lat
,
lng
=
spot
.
lng
)
}
}
}
}
\ No newline at end of file
core/core/src/main/java/com/isidroid/core/ext/ExtNavigation.kt
View file @
d4478719
...
@@ -4,8 +4,6 @@ import androidx.navigation.NavController
...
@@ -4,8 +4,6 @@ import androidx.navigation.NavController
import
androidx.navigation.NavGraph.Companion.findStartDestination
import
androidx.navigation.NavGraph.Companion.findStartDestination
import
androidx.navigation.NavHostController
import
androidx.navigation.NavHostController
import
kotlinx.coroutines.flow.collect
import
kotlinx.coroutines.flow.collect
import
kotlinx.coroutines.flow.count
import
kotlinx.coroutines.flow.mapNotNull
import
kotlinx.coroutines.flow.onEach
import
kotlinx.coroutines.flow.onEach
import
timber.log.Timber
import
timber.log.Timber
...
@@ -14,16 +12,18 @@ fun NavController.navigateSingleTopTo(
...
@@ -14,16 +12,18 @@ fun NavController.navigateSingleTopTo(
isSaveState
:
Boolean
?
=
null
,
isSaveState
:
Boolean
?
=
null
,
isLaunchSingleTop
:
Boolean
=
true
,
isLaunchSingleTop
:
Boolean
=
true
,
isRestoreState
:
Boolean
?
=
null
,
isRestoreState
:
Boolean
?
=
null
,
isInclusive
:
Boolean
=
true
isInclusive
:
Boolean
=
true
,
popupToRoute
:
String
?
=
null
)
{
)
{
navigate
(
route
)
{
navigate
(
route
)
{
popUpTo
(
graph
.
findStartDestination
().
id
)
{
val
node
=
popupToRoute
?.
let
{
graph
.
findNode
(
popupToRoute
)
}
?:
graph
.
findStartDestination
()
popUpTo
(
node
.
id
)
{
inclusive
=
isInclusive
inclusive
=
isInclusive
if
(
isSaveState
!=
null
)
if
(
isSaveState
!=
null
)
saveState
=
isSaveState
saveState
=
isSaveState
}
}
isLaunchSingleTop
?
.
also
{
launchSingleTop
=
it
}
isLaunchSingleTop
.
also
{
launchSingleTop
=
it
}
isRestoreState
?.
also
{
restoreState
=
it
}
isRestoreState
?.
also
{
restoreState
=
it
}
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment