mirror of
https://github.com/wismna/DoNext.git
synced 2025-12-06 08:12:37 -05:00
Compare commits
8 Commits
af0bb51f01
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c2c146a28e | ||
|
|
0b479e10c8 | ||
|
|
0fbdec570a | ||
|
|
e44bb99479 | ||
|
|
dcaecbf185 | ||
|
|
e6f81fa177 | ||
|
|
b3af094eed | ||
|
|
49a58a8977 |
15
.github/workflows/android.yaml
vendored
15
.github/workflows/android.yaml
vendored
@@ -6,6 +6,9 @@ on:
|
|||||||
- master
|
- master
|
||||||
pull_request:
|
pull_request:
|
||||||
|
|
||||||
|
env:
|
||||||
|
MODULE: donextv2
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -20,10 +23,6 @@ jobs:
|
|||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
java-version: '17'
|
java-version: '17'
|
||||||
|
|
||||||
- name: Replace tokens in build.gradle
|
|
||||||
run: |
|
|
||||||
sed -i 's/#{\([^}]*\)}/${\1}/g' donext/build.gradle
|
|
||||||
|
|
||||||
- name: Cache Gradle
|
- name: Cache Gradle
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
@@ -34,6 +33,9 @@ jobs:
|
|||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-gradle-
|
${{ runner.os }}-gradle-
|
||||||
|
|
||||||
|
- name: Decode signing key
|
||||||
|
run: echo "${{ secrets.SIGNING_KEY_BASE64 }}" | base64 --decode > ${{ env.MODULE }}/upload.jks
|
||||||
|
|
||||||
- name: Set up Ruby
|
- name: Set up Ruby
|
||||||
uses: ruby/setup-ruby@v1
|
uses: ruby/setup-ruby@v1
|
||||||
with:
|
with:
|
||||||
@@ -47,5 +49,10 @@ jobs:
|
|||||||
|
|
||||||
- name: Run Fastlane
|
- name: Run Fastlane
|
||||||
env:
|
env:
|
||||||
|
MODULE: ${{ env.MODULE }}
|
||||||
SUPPLY_JSON_KEY: service-account.json
|
SUPPLY_JSON_KEY: service-account.json
|
||||||
|
KEYSTORE_FILE: upload.jks
|
||||||
|
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
|
||||||
|
ALIAS_NAME: ${{ secrets.ALIAS_NAME }}
|
||||||
|
ALIAS_PASSWORD: ${{ secrets.ALIAS_PASSWORD }}
|
||||||
run: bundle exec fastlane internal
|
run: bundle exec fastlane internal
|
||||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,5 +1,6 @@
|
|||||||
*.iml
|
*.iml
|
||||||
*.apk
|
*.apk
|
||||||
|
*.jks
|
||||||
.gradle
|
.gradle
|
||||||
/local.properties
|
/local.properties
|
||||||
/.idea/workspace.xml
|
/.idea/workspace.xml
|
||||||
@@ -8,3 +9,4 @@
|
|||||||
/build
|
/build
|
||||||
/captures
|
/captures
|
||||||
/fastlane/keys/
|
/fastlane/keys/
|
||||||
|
/donext*/release/
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ dependencies {
|
|||||||
implementation "com.microsoft.appcenter:appcenter-crashes:${appCenterSdkVersion}"
|
implementation "com.microsoft.appcenter:appcenter-crashes:${appCenterSdkVersion}"
|
||||||
|
|
||||||
// Lifecycle components
|
// Lifecycle components
|
||||||
def lifecycleVersion = '2.9.3'
|
def lifecycleVersion = '2.9.4'
|
||||||
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycleVersion"
|
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycleVersion"
|
||||||
implementation "androidx.lifecycle:lifecycle-livedata:$lifecycleVersion"
|
implementation "androidx.lifecycle:lifecycle-livedata:$lifecycleVersion"
|
||||||
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycleVersion"
|
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycleVersion"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id("com.android.application")
|
id("com.android.application")
|
||||||
id("org.jetbrains.kotlin.android")
|
id("org.jetbrains.kotlin.android")
|
||||||
@@ -18,12 +20,21 @@ android {
|
|||||||
applicationId = "com.wismna.geoffroy.donext"
|
applicationId = "com.wismna.geoffroy.donext"
|
||||||
minSdk = 26
|
minSdk = 26
|
||||||
targetSdk = 36
|
targetSdk = 36
|
||||||
versionCode = 34
|
versionCode = 35
|
||||||
versionName = "2.0"
|
versionName = "2.0.1"
|
||||||
|
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
signingConfigs {
|
||||||
|
create("release") {
|
||||||
|
storeFile = file(System.getenv("KEYSTORE_FILE") ?: "./upload.jks")
|
||||||
|
storePassword = System.getenv("KEYSTORE_PASSWORD")
|
||||||
|
keyAlias = System.getenv("ALIAS_NAME")
|
||||||
|
keyPassword = System.getenv("ALIAS_PASSWORD")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
getByName("debug").assets.srcDirs(files("$projectDir/schemas"))
|
getByName("debug").assets.srcDirs(files("$projectDir/schemas"))
|
||||||
}
|
}
|
||||||
@@ -38,14 +49,17 @@ android {
|
|||||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||||
"proguard-rules.pro"
|
"proguard-rules.pro"
|
||||||
)
|
)
|
||||||
|
signingConfig = signingConfigs["release"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility = JavaVersion.VERSION_11
|
sourceCompatibility = JavaVersion.VERSION_11
|
||||||
targetCompatibility = JavaVersion.VERSION_11
|
targetCompatibility = JavaVersion.VERSION_11
|
||||||
}
|
}
|
||||||
kotlinOptions {
|
kotlin {
|
||||||
jvmTarget = "11"
|
compilerOptions {
|
||||||
|
jvmTarget = JvmTarget.JVM_11
|
||||||
|
}
|
||||||
}
|
}
|
||||||
buildFeatures {
|
buildFeatures {
|
||||||
compose = true
|
compose = true
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import androidx.compose.foundation.layout.Row
|
|||||||
import androidx.compose.foundation.layout.fillMaxHeight
|
import androidx.compose.foundation.layout.fillMaxHeight
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.rememberScrollState
|
||||||
|
import androidx.compose.foundation.verticalScroll
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.Checklist
|
import androidx.compose.material.icons.filled.Checklist
|
||||||
import androidx.compose.material.icons.filled.Delete
|
import androidx.compose.material.icons.filled.Delete
|
||||||
@@ -43,7 +45,8 @@ fun MenuScreen(
|
|||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxHeight()
|
.fillMaxHeight()
|
||||||
.padding(vertical = 8.dp),
|
.padding(vertical = 8.dp)
|
||||||
|
.verticalScroll(rememberScrollState()),
|
||||||
verticalArrangement = Arrangement.SpaceBetween
|
verticalArrangement = Arrangement.SpaceBetween
|
||||||
) {
|
) {
|
||||||
Column {
|
Column {
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import androidx.compose.foundation.layout.Spacer
|
|||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.rememberScrollState
|
||||||
|
import androidx.compose.foundation.verticalScroll
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.CalendarMonth
|
import androidx.compose.material.icons.filled.CalendarMonth
|
||||||
import androidx.compose.material.icons.filled.Clear
|
import androidx.compose.material.icons.filled.Clear
|
||||||
@@ -61,7 +63,7 @@ fun TaskScreen(
|
|||||||
titleFocusRequester.requestFocus()
|
titleFocusRequester.requestFocus()
|
||||||
}
|
}
|
||||||
|
|
||||||
Column(Modifier.padding(16.dp)) {
|
Column(Modifier.padding(16.dp).verticalScroll(rememberScrollState())) {
|
||||||
Text(
|
Text(
|
||||||
stringResource(
|
stringResource(
|
||||||
if (viewModel.isDeleted) R.string.task_title_deleted
|
if (viewModel.isDeleted) R.string.task_title_deleted
|
||||||
|
|||||||
@@ -1,23 +1,30 @@
|
|||||||
default_platform(:android)
|
default_platform(:android)
|
||||||
|
|
||||||
platform :android do
|
platform :android do
|
||||||
desc "Build, test, and deploy the production version to Google Play"
|
|
||||||
lane :deploy do
|
|
||||||
gradle(task: "testDebugUnitTest")
|
|
||||||
gradle(task: "clean :donextv2:bundleRelease")
|
|
||||||
upload_to_play_store(
|
|
||||||
track: "production",
|
|
||||||
aab: "donextv2/build/outputs/bundle/release/donextv2-release.aab"
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
desc "Build, test, and deploy to Google Play"
|
desc "Build, test, and deploy to Google Play"
|
||||||
lane :internal do
|
lane :internal do
|
||||||
|
module_name = ENV["MODULE"]
|
||||||
|
# Read local versionCode
|
||||||
|
project_root = File.expand_path("..", __dir__)
|
||||||
|
gradle_path = File.join(project_root, module_name, "build.gradle.kts")
|
||||||
|
UI.message("Gradle file resolved at: #{gradle_path}")
|
||||||
|
gradle_file = File.read(gradle_path)
|
||||||
|
gradle_version = gradle_file[/versionCode\s*=\s*(\d+)/, 1].to_i
|
||||||
|
|
||||||
|
# Read Play Store versionCode (track internal)
|
||||||
|
play_version = google_play_track_version_codes(
|
||||||
|
track: "internal"
|
||||||
|
).max.to_i
|
||||||
|
|
||||||
|
if gradle_version <= play_version
|
||||||
|
UI.user_error!("VersionCode #{gradle_version} should be higher than Play Store version (#{play_version}). Aborting upload.")
|
||||||
|
end
|
||||||
|
|
||||||
gradle(task: "testDebugUnitTest")
|
gradle(task: "testDebugUnitTest")
|
||||||
gradle(task: "clean :donextv2:bundleRelease")
|
gradle(task: "clean :#{module_name}:bundleRelease")
|
||||||
upload_to_play_store(
|
upload_to_play_store(
|
||||||
track: "internal",
|
track: "internal",
|
||||||
aab: "donextv2/build/outputs/bundle/release/donextv2-release.aab"
|
aab: "#{module_name}/build/outputs/bundle/release/#{module_name}-release.aab"
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -2,10 +2,7 @@ Complete UI overhaul that gives DoNext a nice, modern look.
|
|||||||
Complete code rewrite to Kotlin and Android Jetpack, with a better architecture.
|
Complete code rewrite to Kotlin and Android Jetpack, with a better architecture.
|
||||||
|
|
||||||
Task lists are now displayed in a navigation menu
|
Task lists are now displayed in a navigation menu
|
||||||
Tasks are now ordered by priority and not cycles
|
Tasks are now ordered by priority and not cycles which were removed
|
||||||
All tasks can be Done or Removed instead of only the first one
|
All tasks can be Done or Removed instead of only the first one
|
||||||
A Recycle Bin was added
|
Removed History page and split its features between the regular task lists and the new Recycle Bin
|
||||||
The whole Next and cycles mechanism was removed
|
Today view is not a separate concept anymore and based on the tasks due date
|
||||||
The History page was removed and its features split between the regular task lists and the Recycle Bin
|
|
||||||
The Today view is not a separate concept now, it's based on the tasks due date
|
|
||||||
No more Settings page as it's not needed anymore (but it may come back later if required)
|
|
||||||
Reference in New Issue
Block a user