Merge remote-tracking branch 'origin/master'

This commit is contained in:
Vineyro 2023-11-21 16:24:00 +07:00
commit dcf6580a95
4 changed files with 32 additions and 14 deletions

View File

@ -51,6 +51,7 @@ import llc.arma.ble.domain.usecase.FftAxis
import llc.arma.ble.domain.usecase.FftFrequency
import llc.arma.ble.domain.usecase.FftViewMode
import llc.arma.ble.domain.usecase.GetAccelerometerHistoryBySerial
import llc.arma.ble.domain.usecase.GetBleBySerial
import llc.arma.ble.domain.usecase.MeasureData
import java.util.Date
@ -78,7 +79,7 @@ fun AccelerometerHistory(
val state = viewModel.viewState.value
LaunchedEffect(ble.serial) {
viewModel.setEvent(AccelerometerHistoryContract.Event.OnStart(ble.serial, accelScale, accelMode, fftAxis, fftMode, frequency))
viewModel.setEvent(AccelerometerHistoryContract.Event.OnStart(ble.name, ble.serial, accelScale, accelMode, fftAxis, fftMode, frequency))
}
/*DisposableEffect("ble") {
@ -130,7 +131,7 @@ fun AccelerometerHistory(
IconButton(
onClick = {
viewModel.setEvent(AccelerometerHistoryContract.Event.OnRefreshHistory(ble.serial, accelScale, accelMode, fftAxis, fftMode, frequency))
viewModel.setEvent(AccelerometerHistoryContract.Event.OnRefreshHistory(ble.name, ble.serial, accelScale, accelMode, fftAxis, fftMode, frequency))
},
enabled = when(state){
is AccelerometerHistoryContract.State.Display -> state.loadingHistoryState is ProgressState.Finished
@ -425,6 +426,7 @@ class AccelerometerHistoryContract {
object OnExport : Event()
data class OnStart(
val bleName: String,
val serial: String,
val accelScale: AccelScale,
val accelMode: AccelViewMode,
@ -434,6 +436,7 @@ class AccelerometerHistoryContract {
) : Event()
data class OnRefreshHistory(
val bleName: String,
val serial: String,
val accelScale: AccelScale,
val accelMode: AccelViewMode,
@ -447,6 +450,7 @@ class AccelerometerHistoryContract {
sealed class State : ViewState {
data class Display(
val bleName: String,
val loadingHistoryState : ProgressState<List<Ble.Accelerometer.HistoryPoint>>
) : State()
@ -465,7 +469,8 @@ class AccelerometerHistoryContract {
@HiltViewModel
class AccelerometerHistoryViewModel @Inject constructor(
private val getAccelerometerHistoryBySerial: GetAccelerometerHistoryBySerial,
private val exportToXlsx: ExportToXlsx
private val exportToXlsx: ExportToXlsx,
private val getBleBySerial: GetBleBySerial
) : BaseViewModel<AccelerometerHistoryContract.State, AccelerometerHistoryContract.Event, AccelerometerHistoryContract.Effect>() {
var measureJob: Job? = null
@ -473,6 +478,7 @@ class AccelerometerHistoryViewModel @Inject constructor(
private var lastSerial: String? = null
override fun setInitialState() = AccelerometerHistoryContract.State.Display(
"",
ProgressState.Indeterminate
)
@ -492,7 +498,7 @@ class AccelerometerHistoryViewModel @Inject constructor(
if(state is AccelerometerHistoryContract.State.Display){
if(state.loadingHistoryState is ProgressState.Finished){
exportToXlsx.invoke(state.loadingHistoryState.data)
exportToXlsx.invoke(state.bleName, state.loadingHistoryState.data)
}
}
@ -526,7 +532,7 @@ class AccelerometerHistoryViewModel @Inject constructor(
lastSerial = event.serial
setState {
AccelerometerHistoryContract.State.Display(ProgressState.Indeterminate)
AccelerometerHistoryContract.State.Display(event.bleName, ProgressState.Indeterminate)
}
measureJob?.cancel()
@ -536,7 +542,7 @@ class AccelerometerHistoryViewModel @Inject constructor(
it.fold(
onSuccess = {
setState {
AccelerometerHistoryContract.State.Display(it)
AccelerometerHistoryContract.State.Display(event.bleName, it)
}
},
onFailure = {
@ -562,7 +568,7 @@ class AccelerometerHistoryViewModel @Inject constructor(
viewModelScope.launch {
setState {
AccelerometerHistoryContract.State.Display(ProgressState.Indeterminate)
AccelerometerHistoryContract.State.Display("", ProgressState.Indeterminate)
}
measureJob?.cancel()
@ -572,7 +578,7 @@ class AccelerometerHistoryViewModel @Inject constructor(
it.fold(
onSuccess = {
setState {
AccelerometerHistoryContract.State.Display(it)
AccelerometerHistoryContract.State.Display(event.bleName, it)
}
},
onFailure = {

View File

@ -23,11 +23,17 @@ class XlsxRepositoryImpl @Inject constructor(
private val application: Application
) : XlsxRepository {
override fun exportToXls(data: List<Ble.Accelerometer.HistoryPoint>): File {
override fun exportToXls(
bleName: String,
data: List<Ble.Accelerometer.HistoryPoint>
): File {
val fileNameDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")
val fileName = "$bleName ${fileNameDateFormat.format(Date(System.currentTimeMillis()))}.xlsx"
val formatter = SimpleDateFormat("dd.MM.yyyy HH:mm")
val mailFile = File(application.filesDir, "${UUID.randomUUID()}.xlsx")
val mailFile = File(application.filesDir, fileName)
mailFile.createNewFile()
when(data.firstOrNull()){
@ -84,7 +90,7 @@ class XlsxRepositoryImpl @Inject constructor(
workbook.write(saveFos)
saveFos.close()
val sharedFile = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "${UUID.randomUUID()}.xlsx")
val sharedFile = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), fileName)
sharedFile.createNewFile()
val sharedSaveFos = FileOutputStream(sharedFile)

View File

@ -6,6 +6,9 @@ import java.io.File
interface XlsxRepository {
fun exportToXls(data: List<Ble.Accelerometer.HistoryPoint>): File
fun exportToXls(
bleName: String,
data: List<Ble.Accelerometer.HistoryPoint>
): File
}

View File

@ -24,9 +24,12 @@ class ExportToXlsx @Inject constructor(
private val emailRepository: EmailRepository
) {
operator fun invoke(data: List<Ble.Accelerometer.HistoryPoint>){
operator fun invoke(
bleName: String,
data: List<Ble.Accelerometer.HistoryPoint>
){
val file = xlsxRepository.exportToXls(data)
val file = xlsxRepository.exportToXls(bleName, data)
emailRepository.sendFile(file)
}