From 034a778efeb18f9c4121d2ae2ae19368fafac4f0 Mon Sep 17 00:00:00 2001 From: Pranav Maganti Date: Thu, 19 Aug 2021 23:07:33 +0100 Subject: [PATCH 1/7] Update dependancies and remove appcompat --- app/build.gradle.kts | 5 -- build.gradle.kts | 4 +- .../src/main/kotlin/CommonModulePlugin.kt | 3 - buildSrc/src/main/kotlin/Dependencies.kt | 25 +++--- buildSrc/src/main/kotlin/update_deps.py | 79 +++++++++++++++++++ test-utils/build.gradle.kts | 5 +- 6 files changed, 93 insertions(+), 28 deletions(-) create mode 100644 buildSrc/src/main/kotlin/update_deps.py diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 71b0d69e..f68ae524 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -59,11 +59,6 @@ dependencies { implementation(Dependencies.AndroidX.Compose.activity) implementation(Dependencies.AndroidX.Compose.navigation) - implementation(Dependencies.AndroidX.coreKtx) - implementation(Dependencies.AndroidX.appcompat) - - implementation(Dependencies.material) - implementation(kotlin("stdlib-jdk8")) androidTestImplementation(Dependencies.AndroidX.Compose.testing) diff --git a/build.gradle.kts b/build.gradle.kts index 1aaeedce..e2f66c5a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -15,10 +15,10 @@ buildscript { dependencies { classpath(Dependencies.Kotlin.gradlePlugin) - classpath("com.android.tools.build:gradle:7.1.0-alpha05") + classpath("com.android.tools.build:gradle:7.1.0-alpha08") classpath("com.vanniktech:gradle-maven-publish-plugin:0.17.0") classpath("org.jetbrains.dokka:dokka-gradle-plugin:1.5.0") - classpath("com.karumi:shot:5.10.6") + classpath(Dependencies.Shot.core) } } diff --git a/buildSrc/src/main/kotlin/CommonModulePlugin.kt b/buildSrc/src/main/kotlin/CommonModulePlugin.kt index ede2ab96..0c2baa22 100644 --- a/buildSrc/src/main/kotlin/CommonModulePlugin.kt +++ b/buildSrc/src/main/kotlin/CommonModulePlugin.kt @@ -23,9 +23,6 @@ class CommonModulePlugin: Plugin { private fun Project.dependenciesConf() { dependencies.apply { implementation(Dependencies.Kotlin.stdlib) - implementation(Dependencies.AndroidX.coreKtx) - implementation(Dependencies.AndroidX.appcompat) - implementation(Dependencies.material) implementation(Dependencies.AndroidX.Compose.ui) implementation(Dependencies.AndroidX.Compose.material) diff --git a/buildSrc/src/main/kotlin/Dependencies.kt b/buildSrc/src/main/kotlin/Dependencies.kt index b9b5ce34..39899ad2 100644 --- a/buildSrc/src/main/kotlin/Dependencies.kt +++ b/buildSrc/src/main/kotlin/Dependencies.kt @@ -1,5 +1,4 @@ object Dependencies { - const val material = "com.google.android.material:material:1.5.0-alpha01" const val desugar = "com.android.tools:desugar_jdk_libs:1.1.5" object ComposeMaterialDialogs { @@ -11,29 +10,27 @@ object Dependencies { } object Ktlint { - const val version = "0.42.0" + const val version = "0.42.1" + const val core = "com.printrest:ktlint:$version" } object Accompanist { - private const val version = "0.15.0" + private const val version = "0.16.1" const val pager = "com.google.accompanist:accompanist-pager:$version" } object Kotlin { - private const val version = "1.5.10" + private const val version = "1.5.30-RC" const val stdlib = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$version" const val gradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:$version" } object Shot { - private const val version = "5.10.6" - const val shot = "com.karumi:shot-android:$version" + private const val version = "5.11.2" + const val core = "com.karumi:shot:$version" } object AndroidX { - const val appcompat = "androidx.appcompat:appcompat:1.4.0-alpha03" - const val coreKtx = "androidx.core:core-ktx:1.7.0-alpha01" - object Testing { const val version = "1.4.0" const val core = "androidx.test:core:$version" @@ -42,16 +39,16 @@ object Dependencies { } object Compose { - const val version = "1.0.0" + const val version = "1.1.0-alpha02" const val ui = "androidx.compose.ui:ui:$version" const val material = "androidx.compose.material:material:$version" const val materialIconsExtended = "androidx.compose.material:material-icons-extended:$version" - const val testing = "androidx.compose.ui:ui-test-junit4:1.0.0-rc02" - const val activity = "androidx.activity:activity-compose:1.3.0-rc02" - const val navigation = "androidx.navigation:navigation-compose:2.4.0-alpha05" + const val testing = "androidx.compose.ui:ui-test-junit4:1.1.0-alpha02" + const val activity = "androidx.activity:activity-compose:1.3.1" + const val navigation = "androidx.navigation:navigation-compose:2.4.0-alpha07" } } -} +} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/update_deps.py b/buildSrc/src/main/kotlin/update_deps.py new file mode 100644 index 00000000..56e51dd5 --- /dev/null +++ b/buildSrc/src/main/kotlin/update_deps.py @@ -0,0 +1,79 @@ +import re +from typing import List +import bs4 as beautifulsoup +import requests +from tqdm import tqdm + +from selenium import webdriver +from selenium.webdriver.chrome.options import Options +from selenium.webdriver.common.by import By +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.support import expected_conditions as ec + +main_search_url = 'https://search.maven.org/solrsearch/select?q=g:"{}"+AND+a:"{}"&core=gav&rows=1&wt=json' +google_search_url = "https://maven.google.com/web/index.html" + + +chrome_options = Options() +chrome_options.add_argument("--headless") +chrome_options.add_argument("--window-size=1920x1080") +driver = webdriver.Chrome(options=chrome_options) + +dep_file = "Dependencies.kt" + +with open(dep_file, "r") as readfile: + current_deps = readfile.read().splitlines() + +version_patten = re.compile(r"version = \"(.*)\"") +dep_pattern = re.compile(r"const val ([^=]*) = \"(.*)\"") +current_version = ("", -1, "") + +updated_deps: List[str] = [] + +for index, item in enumerate(tqdm(current_deps)): + version_match = version_patten.search(item) + dep_match = dep_pattern.search(item) + + if version_match: + if current_version[1] != -1: + updated_deps[current_version[1]] = re.sub(version_patten, f'version = "{current_version[0]}"', current_version[2]) + current_version = (version_match.group(1), index, item) + updated_deps.append(item) + elif dep_match: + (dep, version) = dep_match.group(2).rsplit(":", 1) + (group, artifact) = dep.split(":") + main_dep_url = main_search_url.format(group, artifact) + google_dep_url = f"{google_search_url}#{group}:{artifact}" + + res = requests.get(main_dep_url).json() + latest_version = version + + if res["response"]["docs"]: + latest_version = res["response"]["docs"][0]["v"] + else: + driver.get(google_dep_url) + elems = WebDriverWait(driver, 10).until( + ec.visibility_of_element_located( + (By.XPATH, "//div[@class='content-header ng-binding ng-scope']") + ) + ) + + soup = beautifulsoup.BeautifulSoup(driver.page_source, "html.parser") + latest_version = soup.find("span", {"class": "ng-binding"}).text + + if version == "$version": + current_version = (latest_version, current_version[1], current_version[2]) + updated_deps.append(item) + else: + updated_deps.append( + f"const val {dep_match.group(1)} = \"{group}:{artifact}:{latest_version}\"" + ) + else: + updated_deps.append(item) + + +if current_version[1] != -1: + updated_deps[current_version[1]] = re.sub(version_patten, f'version = "{current_version[0]}"', current_version[2]) + +with open(dep_file, "w") as outfile: + outfile.write("\n".join(updated_deps)) \ No newline at end of file diff --git a/test-utils/build.gradle.kts b/test-utils/build.gradle.kts index f463e179..389a8c9c 100644 --- a/test-utils/build.gradle.kts +++ b/test-utils/build.gradle.kts @@ -51,9 +51,6 @@ android { dependencies { api(project(":core")) implementation(Dependencies.Kotlin.stdlib) - implementation(Dependencies.AndroidX.coreKtx) - implementation(Dependencies.AndroidX.appcompat) - implementation(Dependencies.material) implementation(Dependencies.AndroidX.Compose.ui) implementation(Dependencies.AndroidX.Compose.material) @@ -61,5 +58,5 @@ dependencies { implementation(Dependencies.AndroidX.Compose.activity) implementation(Dependencies.AndroidX.Compose.testing) - implementation(Dependencies.Shot.shot) + implementation(Dependencies.Shot.core) } From ad0ee1973a6a36addde9ed658ba7fb1f34d5afc5 Mon Sep 17 00:00:00 2001 From: Pranav Maganti Date: Wed, 25 Aug 2021 21:26:41 +0100 Subject: [PATCH 2/7] Remove MaterialDialog class structure --- app/build.gradle.kts | 5 +- app/src/main/AndroidManifest.xml | 7 +- .../MainActivity.kt | 5 +- .../vanpra/composematerialdialogdemos/Util.kt | 14 +- .../demos/BasicDialog.kt | 2 +- app/src/main/res/values/themes.xml | 23 -- build.gradle.kts | 4 +- buildSrc/src/main/kotlin/Dependencies.kt | 8 +- color/build.gradle.kts | 5 +- color/src/androidTest/AndroidManifest.xml | 3 +- .../color/ColorPicker.kt | 3 +- core/build.gradle.kts | 4 +- core/src/androidTest/AndroidManifest.xml | 4 +- .../composematerialdialogs/MaterialDialog.kt | 282 +++++++++--------- .../MaterialDialogButtons.kt | 22 +- .../MaterialDialogCore.kt | 17 +- .../MaterialDialogLists.kt | 13 +- datetime/build.gradle.kts | 4 +- datetime/src/androidTest/AndroidManifest.xml | 3 +- .../datetime/date/DatePicker.kt | 19 +- .../datetime/time/TimePicker.kt | 3 +- gradle.properties | 4 +- gradle/wrapper/gradle-wrapper.properties | 2 +- test-utils/build.gradle.kts | 4 +- 24 files changed, 227 insertions(+), 233 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f68ae524..50ef28b7 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -5,14 +5,14 @@ plugins { } android { - compileSdk = 30 + compileSdk = 31 buildToolsVersion = "30.0.3" defaultConfig { applicationId = "com.vanpra.composematerialdialogs" minSdk = 23 - targetSdk = 30 + targetSdk = 31 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" @@ -52,6 +52,7 @@ dependencies { // implementation(Dependencies.ComposeMaterialDialogs.color) implementation(Dependencies.Kotlin.stdlib) + implementation(Dependencies.Google.material) implementation(Dependencies.AndroidX.Compose.ui) implementation(Dependencies.AndroidX.Compose.material) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 13bd46b9..b2772db6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -10,12 +10,11 @@ android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" - android:theme="@style/Theme.Composematerialdialogs" - tools:replace="android:theme"> + android:theme="@style/Theme.MaterialComponents.DayNight.NoActionBar"> + android:exported="true" + android:label="@string/app_name"> diff --git a/app/src/main/java/com/vanpra/composematerialdialogdemos/MainActivity.kt b/app/src/main/java/com/vanpra/composematerialdialogdemos/MainActivity.kt index bd1a4431..8ab190ee 100644 --- a/app/src/main/java/com/vanpra/composematerialdialogdemos/MainActivity.kt +++ b/app/src/main/java/com/vanpra/composematerialdialogdemos/MainActivity.kt @@ -1,8 +1,9 @@ package com.vanpra.composematerialdialogdemos +import android.app.Activity import android.os.Bundle +import androidx.activity.ComponentActivity import androidx.activity.compose.setContent -import androidx.appcompat.app.AppCompatActivity import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth @@ -31,7 +32,7 @@ import com.vanpra.composematerialdialogdemos.ui.ComposeMaterialDialogsTheme /** * @brief MainActivity with material dialog samples */ -class MainActivity : AppCompatActivity() { +class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { diff --git a/app/src/main/java/com/vanpra/composematerialdialogdemos/Util.kt b/app/src/main/java/com/vanpra/composematerialdialogdemos/Util.kt index 6206e7a2..56d726c7 100644 --- a/app/src/main/java/com/vanpra/composematerialdialogdemos/Util.kt +++ b/app/src/main/java/com/vanpra/composematerialdialogdemos/Util.kt @@ -14,6 +14,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import com.vanpra.composematerialdialogs.MaterialDialog import com.vanpra.composematerialdialogs.MaterialDialogButtons +import com.vanpra.composematerialdialogs.MaterialDialogScope +import com.vanpra.composematerialdialogs.rememberMaterialDialogState /** * @brief Builds a dialog and adds button to the layout which shows the dialog on click @@ -22,14 +24,16 @@ import com.vanpra.composematerialdialogs.MaterialDialogButtons fun DialogAndShowButton( buttonText: String, buttons: @Composable MaterialDialogButtons.() -> Unit = {}, - content: @Composable MaterialDialog.() -> Unit + content: @Composable MaterialDialogScope.() -> Unit ) { - val dialog = remember { MaterialDialog() } - - dialog.build(content = content, buttons = buttons) + val dialogState = rememberMaterialDialogState() + + MaterialDialog(dialogState = dialogState, buttons = buttons) { + content() + } TextButton( - onClick = { dialog.show() }, + onClick = { dialogState.show() }, modifier = Modifier .fillMaxWidth() .padding(8.dp) diff --git a/app/src/main/java/com/vanpra/composematerialdialogdemos/demos/BasicDialog.kt b/app/src/main/java/com/vanpra/composematerialdialogdemos/demos/BasicDialog.kt index 425c2f96..6676062d 100644 --- a/app/src/main/java/com/vanpra/composematerialdialogdemos/demos/BasicDialog.kt +++ b/app/src/main/java/com/vanpra/composematerialdialogdemos/demos/BasicDialog.kt @@ -115,7 +115,7 @@ fun BasicDialogDemo() { input( label = "Name", hint = "Jon Smith", keyboardActions = KeyboardActions( - onDone = { this@DialogAndShowButton.submit() } + onDone = { submit() } ), keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done) ) { diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 07fc90a3..17a54dde 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,25 +1,2 @@ - - - - - -