Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fcf4d02caf | ||
|
|
6166a2f249 |
No files matched your search
@@ -46,3 +46,30 @@ jobs:
|
|||||||
files: app/build/outputs/apk/release/MonthlyPaymentApp-${{ github.ref_name }}.apk
|
files: app/build/outputs/apk/release/MonthlyPaymentApp-${{ github.ref_name }}.apk
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Update update.json after release
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
run: |
|
||||||
|
TAG_NAME="${{ github.ref_name }}"
|
||||||
|
VERSION_NAME="${TAG_NAME#v}"
|
||||||
|
VERSION_CODE=$(grep 'versionCode' app/build.gradle.kts | head -n 1 | awk '{print $3}')
|
||||||
|
|
||||||
|
git config user.name "github-actions[bot]"
|
||||||
|
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
||||||
|
git fetch origin main
|
||||||
|
git checkout main
|
||||||
|
|
||||||
|
cat <<EOF > update.json
|
||||||
|
{
|
||||||
|
"versionCode": ${VERSION_CODE},
|
||||||
|
"versionName": "${VERSION_NAME}",
|
||||||
|
"url": "https://github.com/oqba26/MonthlyPaymentApp/releases/download/${TAG_NAME}/MonthlyPaymentApp-${TAG_NAME}.apk",
|
||||||
|
"releaseNotes": "بهبودهای پایداری و عملکرد همگامسازی",
|
||||||
|
"isForceUpdate": false
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
git add update.json
|
||||||
|
git commit -m "auto-update update.json for release ${TAG_NAME}" || true
|
||||||
|
git push origin main
|
||||||
@@ -30,8 +30,8 @@ android {
|
|||||||
applicationId = "com.oqba26.monthlypaymentapp"
|
applicationId = "com.oqba26.monthlypaymentapp"
|
||||||
minSdk = 25
|
minSdk = 25
|
||||||
targetSdk = 34
|
targetSdk = 34
|
||||||
versionCode = 12
|
versionCode = 13
|
||||||
versionName = "1.1.1"
|
versionName = "1.1.2"
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
vectorDrawables { useSupportLibrary = true }
|
vectorDrawables { useSupportLibrary = true }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import androidx.compose.material.ExperimentalMaterialApi
|
|||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.Message
|
import androidx.compose.material.icons.automirrored.filled.Message
|
||||||
import androidx.compose.material.icons.filled.Archive
|
import androidx.compose.material.icons.filled.Archive
|
||||||
import androidx.compose.material.icons.filled.Assessment
|
|
||||||
import androidx.compose.material.icons.filled.Check
|
import androidx.compose.material.icons.filled.Check
|
||||||
import androidx.compose.material.icons.filled.Close
|
import androidx.compose.material.icons.filled.Close
|
||||||
import androidx.compose.material.icons.filled.Sync
|
import androidx.compose.material.icons.filled.Sync
|
||||||
@@ -117,7 +116,6 @@ fun PersonScreen(
|
|||||||
val dashboardData by viewModel.dashboardData.collectAsState()
|
val dashboardData by viewModel.dashboardData.collectAsState()
|
||||||
val financialReportData by viewModel.financialReportData.collectAsState()
|
val financialReportData by viewModel.financialReportData.collectAsState()
|
||||||
val showFinancialReportDialog by viewModel.showFinancialReportDialog.collectAsState()
|
val showFinancialReportDialog by viewModel.showFinancialReportDialog.collectAsState()
|
||||||
val isOperatorMode by viewModel.isOperatorMode.collectAsState()
|
|
||||||
val defaultPaymentAmount by viewModel.defaultPaymentAmountFlow.collectAsState(initial = 0.0)
|
val defaultPaymentAmount by viewModel.defaultPaymentAmountFlow.collectAsState(initial = 0.0)
|
||||||
val cardNumbers by viewModel.cardNumbersFlow.collectAsState(initial = emptyList())
|
val cardNumbers by viewModel.cardNumbersFlow.collectAsState(initial = emptyList())
|
||||||
val personForPaymentDialog by viewModel.personForPaymentDialog.collectAsState()
|
val personForPaymentDialog by viewModel.personForPaymentDialog.collectAsState()
|
||||||
@@ -188,8 +186,7 @@ fun PersonScreen(
|
|||||||
DashboardCard(
|
DashboardCard(
|
||||||
data = dashboardData,
|
data = dashboardData,
|
||||||
financialReportData = financialReportData,
|
financialReportData = financialReportData,
|
||||||
isOperatorMode = isOperatorMode,
|
isMosqueCategory = (currentCategory == "mosque")
|
||||||
onOpenReportClick = { viewModel.onShowFinancialReport() }
|
|
||||||
)
|
)
|
||||||
|
|
||||||
OutlinedTextField(
|
OutlinedTextField(
|
||||||
@@ -582,7 +579,7 @@ fun AddNewPersonDialog(
|
|||||||
val currentShamsiYear = getCurrentShamsiYear()
|
val currentShamsiYear = getCurrentShamsiYear()
|
||||||
val currentShamsiMonth = getCurrentShamsiMonth()
|
val currentShamsiMonth = getCurrentShamsiMonth()
|
||||||
|
|
||||||
var startMonth by remember { mutableIntStateOf(currentShamsiMonth) }
|
var startMonth by remember { mutableIntStateOf(if (isMosqueCategory) currentShamsiMonth else 1) }
|
||||||
var startYear by remember { mutableIntStateOf(currentShamsiYear) }
|
var startYear by remember { mutableIntStateOf(currentShamsiYear) }
|
||||||
|
|
||||||
var similarContacts by remember { mutableStateOf<List<ContactMatch>>(emptyList()) }
|
var similarContacts by remember { mutableStateOf<List<ContactMatch>>(emptyList()) }
|
||||||
@@ -1072,8 +1069,7 @@ fun SelectCardDialog(
|
|||||||
fun DashboardCard(
|
fun DashboardCard(
|
||||||
data: DashboardUiModel,
|
data: DashboardUiModel,
|
||||||
financialReportData: FinancialReportData,
|
financialReportData: FinancialReportData,
|
||||||
isOperatorMode: Boolean = false,
|
isMosqueCategory: Boolean = false
|
||||||
onOpenReportClick: () -> Unit
|
|
||||||
) {
|
) {
|
||||||
val animatedProgress by animateFloatAsState(
|
val animatedProgress by animateFloatAsState(
|
||||||
targetValue = data.progress,
|
targetValue = data.progress,
|
||||||
@@ -1110,7 +1106,11 @@ fun DashboardCard(
|
|||||||
horizontalArrangement = Arrangement.SpaceBetween,
|
horizontalArrangement = Arrangement.SpaceBetween,
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
Text("مجموع درآمد ماه جاری", style = MaterialTheme.typography.titleSmall, fontWeight = FontWeight.Bold)
|
Text(
|
||||||
|
text = if (isMosqueCategory) "کمکهای جمعآوری شده ماه جاری" else "حقوق جمعآوری شده ماه جاری",
|
||||||
|
style = MaterialTheme.typography.titleSmall,
|
||||||
|
fontWeight = FontWeight.Bold
|
||||||
|
)
|
||||||
Text("${formatNumberAsPersian(data.totalIncome)} تومان", style = MaterialTheme.typography.bodyMedium, fontWeight = FontWeight.Bold)
|
Text("${formatNumberAsPersian(data.totalIncome)} تومان", style = MaterialTheme.typography.bodyMedium, fontWeight = FontWeight.Bold)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1136,24 +1136,6 @@ fun DashboardCard(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isOperatorMode) {
|
|
||||||
OutlinedButton(
|
|
||||||
onClick = onOpenReportClick,
|
|
||||||
modifier = Modifier
|
|
||||||
.fillMaxWidth()
|
|
||||||
.padding(top = 2.dp),
|
|
||||||
shape = MaterialTheme.shapes.medium
|
|
||||||
) {
|
|
||||||
Icon(
|
|
||||||
imageVector = Icons.Default.Assessment,
|
|
||||||
contentDescription = null,
|
|
||||||
modifier = Modifier.size(18.dp)
|
|
||||||
)
|
|
||||||
Spacer(modifier = Modifier.width(6.dp))
|
|
||||||
Text("مشاهده گزارش کامل مالی و درآمدهای گذشته", style = MaterialTheme.typography.labelLarge)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"versionCode": 12,
|
"versionCode": 13,
|
||||||
"versionName": "1.1.1",
|
"versionName": "1.1.2",
|
||||||
"url": "https://github.com/oqba26/MonthlyPaymentApp/releases/download/v1.1.1/MonthlyPaymentApp-v1.1.1.apk",
|
"url": "https://github.com/oqba26/MonthlyPaymentApp/releases/download/v1.1.2/MonthlyPaymentApp-v1.1.2.apk",
|
||||||
"releaseNotes": "بهبودهای همگامسازی شبکه و پایداری لایو PocketBase",
|
"releaseNotes": "بهبودهای پایداری و عملکرد همگامسازی",
|
||||||
"isForceUpdate": false
|
"isForceUpdate": false
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user