Skip to content

Commit fc3d0ce

Browse files
committed
Replace hardcoded license file with OSS licenses plugin
Change-Id: I4427fd5d7b7abd8a2912a41f61ffedfac4af9d6a
1 parent bbdc62c commit fc3d0ce

File tree

7 files changed

+64
-983
lines changed

7 files changed

+64
-983
lines changed

app/LICENSES.md

Lines changed: 0 additions & 931 deletions
This file was deleted.

app/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ plugins {
2323
id("nowinandroid.android.hilt")
2424
id("jacoco")
2525
id("nowinandroid.android.application.firebase")
26+
id("com.google.android.gms.oss-licenses-plugin")
2627
}
2728

2829
android {
@@ -118,7 +119,6 @@ dependencies {
118119
implementation(libs.androidx.navigation.compose)
119120
implementation(libs.androidx.window.manager)
120121
implementation(libs.androidx.profileinstaller)
121-
122122
implementation(libs.coil.kt)
123123
}
124124

build.gradle.kts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ buildscript {
2222
// Android Build Server
2323
maven { url = uri("../nowinandroid-prebuilts/m2repository") }
2424
}
25+
dependencies {
26+
classpath(libs.google.oss.licenses.plugin) {
27+
exclude(group = "com.google.protobuf")
28+
}
29+
}
2530
}
2631

2732
// Lists all plugins used throughout the project without applying them.

feature/settings/build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,7 @@ plugins {
2525
android {
2626
namespace = "com.google.samples.apps.nowinandroid.feature.settings"
2727
}
28+
29+
dependencies {
30+
implementation(libs.google.oss.licenses)
31+
}

feature/settings/src/main/AndroidManifest.xml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,13 @@
1515
limitations under the License.
1616
-->
1717
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
18+
<application>
19+
<activity
20+
android:name="com.google.android.gms.oss.licenses.OssLicensesMenuActivity"
21+
android:theme="@style/Theme.AppCompat" />
1822

19-
</manifest>
23+
<activity
24+
android:name="com.google.android.gms.oss.licenses.OssLicensesActivity"
25+
android:theme="@style/Theme.AppCompat" />
26+
</application>
27+
</manifest>

feature/settings/src/main/java/com/google/samples/apps/nowinandroid/feature/settings/SettingsDialog.kt

Lines changed: 36 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@
1616

1717
package com.google.samples.apps.nowinandroid.feature.settings
1818

19+
import android.content.Intent
1920
import androidx.compose.foundation.clickable
21+
import androidx.compose.foundation.layout.Arrangement
2022
import androidx.compose.foundation.layout.Column
23+
import androidx.compose.foundation.layout.ExperimentalLayoutApi
24+
import androidx.compose.foundation.layout.FlowRow
2125
import androidx.compose.foundation.layout.Row
2226
import androidx.compose.foundation.layout.Spacer
2327
import androidx.compose.foundation.layout.fillMaxWidth
24-
import androidx.compose.foundation.layout.height
2528
import androidx.compose.foundation.layout.padding
2629
import androidx.compose.foundation.layout.width
2730
import androidx.compose.foundation.layout.widthIn
@@ -40,6 +43,7 @@ import androidx.compose.ui.Alignment
4043
import androidx.compose.ui.ExperimentalComposeUiApi
4144
import androidx.compose.ui.Modifier
4245
import androidx.compose.ui.platform.LocalConfiguration
46+
import androidx.compose.ui.platform.LocalContext
4347
import androidx.compose.ui.platform.LocalUriHandler
4448
import androidx.compose.ui.res.stringResource
4549
import androidx.compose.ui.semantics.Role
@@ -48,6 +52,8 @@ import androidx.compose.ui.unit.dp
4852
import androidx.compose.ui.window.DialogProperties
4953
import androidx.hilt.navigation.compose.hiltViewModel
5054
import androidx.lifecycle.compose.collectAsStateWithLifecycle
55+
import com.google.android.gms.oss.licenses.OssLicensesMenuActivity
56+
import com.google.samples.apps.nowinandroid.core.designsystem.component.NiaTextButton
5157
import com.google.samples.apps.nowinandroid.core.designsystem.theme.NiaTheme
5258
import com.google.samples.apps.nowinandroid.core.designsystem.theme.supportsDynamicTheming
5359
import com.google.samples.apps.nowinandroid.core.model.data.DarkThemeConfig
@@ -236,56 +242,43 @@ fun SettingsDialogThemeChooserRow(
236242
}
237243
}
238244

245+
@OptIn(ExperimentalLayoutApi::class)
239246
@Composable
240247
private fun LinksPanel() {
241-
Row(
242-
modifier = Modifier.padding(top = 16.dp),
248+
FlowRow(
249+
horizontalArrangement = Arrangement.spacedBy(
250+
space = 16.dp,
251+
alignment = Alignment.CenterHorizontally,
252+
),
253+
modifier = Modifier.fillMaxWidth()
243254
) {
244-
Column(
245-
Modifier.fillMaxWidth(),
246-
horizontalAlignment = Alignment.CenterHorizontally,
255+
val uriHandler = LocalUriHandler.current
256+
NiaTextButton(
257+
onClick = { uriHandler.openUri(PRIVACY_POLICY_URL) }
247258
) {
248-
Row {
249-
TextLink(
250-
text = stringResource(string.privacy_policy),
251-
url = PRIVACY_POLICY_URL,
252-
)
253-
Spacer(Modifier.width(16.dp))
254-
TextLink(
255-
text = stringResource(string.licenses),
256-
url = LICENSES_URL,
257-
)
258-
}
259-
Spacer(Modifier.height(16.dp))
260-
Row {
261-
TextLink(
262-
text = stringResource(string.brand_guidelines),
263-
url = BRAND_GUIDELINES_URL,
264-
)
265-
Spacer(Modifier.width(16.dp))
266-
TextLink(
267-
text = stringResource(string.feedback),
268-
url = FEEDBACK_URL,
269-
)
259+
Text(text = stringResource(string.privacy_policy))
260+
}
261+
val context = LocalContext.current
262+
NiaTextButton(
263+
onClick = {
264+
context.startActivity(Intent(context, OssLicensesMenuActivity::class.java))
270265
}
266+
) {
267+
Text(text = stringResource(string.licenses))
268+
}
269+
NiaTextButton(
270+
onClick = { uriHandler.openUri(BRAND_GUIDELINES_URL) }
271+
) {
272+
Text(text = stringResource(string.brand_guidelines))
273+
}
274+
NiaTextButton(
275+
onClick = { uriHandler.openUri(FEEDBACK_URL) }
276+
) {
277+
Text(text = stringResource(string.feedback))
271278
}
272279
}
273280
}
274281

275-
@Composable
276-
private fun TextLink(text: String, url: String) {
277-
val uriHandler = LocalUriHandler.current
278-
279-
Text(
280-
text = text,
281-
style = MaterialTheme.typography.labelLarge,
282-
color = MaterialTheme.colorScheme.primary,
283-
modifier = Modifier
284-
.padding(vertical = 8.dp)
285-
.clickable { uriHandler.openUri(url) },
286-
)
287-
}
288-
289282
@Preview
290283
@Composable
291284
private fun PreviewSettingsDialog() {
@@ -322,8 +315,5 @@ private fun PreviewSettingsDialogLoading() {
322315

323316
/* ktlint-disable max-line-length */
324317
private const val PRIVACY_POLICY_URL = "https://policies.google.com/privacy"
325-
private const val LICENSES_URL =
326-
"https://github.com/android/nowinandroid/blob/main/app/LICENSES.md#open-source-licenses-and-copyright-notices"
327-
private const val BRAND_GUIDELINES_URL =
328-
"https://developer.android.com/distribute/marketing-tools/brand-guidelines"
318+
private const val BRAND_GUIDELINES_URL = "https://developer.android.com/distribute/marketing-tools/brand-guidelines"
329319
private const val FEEDBACK_URL = "https://goo.gle/nia-app-feedback"

gradle/libs.versions.toml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ firebaseBom = "31.2.0"
3333
firebaseCrashlyticsPlugin = "2.9.2"
3434
firebasePerfPlugin = "1.4.2"
3535
gmsPlugin = "4.3.14"
36+
googleOss = "17.0.1"
37+
googleOssPlugin = "0.10.6"
3638
hilt = "2.44.2"
3739
hiltExt = "1.0.0"
3840
jacoco = "0.8.7"
@@ -44,18 +46,18 @@ kotlinxSerializationJson = "1.5.0"
4446
ksp = "1.8.20-1.0.11"
4547
lint = "30.3.1"
4648
okhttp = "4.10.0"
47-
protobuf = "3.21.12"
48-
protobufPlugin = "0.9.1"
49+
protobuf = "3.23.0"
50+
protobufPlugin = "0.9.3"
4951
retrofit = "2.9.0"
5052
retrofitKotlinxSerializationJson = "1.0.0"
5153
room = "2.5.0"
5254
secrets = "2.0.1"
5355
turbine = "0.12.1"
5456

5557
[libraries]
58+
accompanist-permissions = { group = "com.google.accompanist", name = "accompanist-permissions", version.ref = "accompanist" }
5659
accompanist-systemuicontroller = { group = "com.google.accompanist", name = "accompanist-systemuicontroller", version.ref = "accompanist" }
5760
accompanist-testharness = { group = "com.google.accompanist", name = "accompanist-testharness", version.ref = "accompanist" }
58-
accompanist-permissions = { group = "com.google.accompanist", name = "accompanist-permissions", version.ref = "accompanist" }
5961
android-desugarJdkLibs = { group = "com.android.tools", name = "desugar_jdk_libs", version.ref = "androidDesugarJdkLibs" }
6062
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "androidxActivity" }
6163
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidxAppCompat" }
@@ -99,11 +101,14 @@ androidx-work-testing = { group = "androidx.work", name = "work-testing", versio
99101
coil-kt = { group = "io.coil-kt", name = "coil", version.ref = "coil" }
100102
coil-kt-compose = { group = "io.coil-kt", name = "coil-compose", version.ref = "coil" }
101103
coil-kt-svg = { group = "io.coil-kt", name = "coil-svg", version.ref = "coil" }
102-
firebase-bom = { group = "com.google.firebase", name = "firebase-bom", version.ref = "firebaseBom" }
103104
firebase-analytics = { group = "com.google.firebase", name = "firebase-analytics-ktx" }
105+
firebase-bom = { group = "com.google.firebase", name = "firebase-bom", version.ref = "firebaseBom" }
104106
firebase-cloud-messaging = { group = "com.google.firebase", name = "firebase-messaging-ktx" }
105107
firebase-crashlytics = { group = "com.google.firebase", name = "firebase-crashlytics-ktx" }
106108
firebase-performance = { group = "com.google.firebase", name = "firebase-perf-ktx" }
109+
firebase-performance-gradle = { group = "com.google.firebase", name = "perf-plugin", version.ref = "firebasePerfPlugin" }
110+
google-oss-licenses = { group = "com.google.android.gms", name = "play-services-oss-licenses", version.ref = "googleOss" }
111+
google-oss-licenses-plugin = { group = "com.google.android.gms", name = "oss-licenses-plugin", version.ref = "googleOssPlugin" }
107112
hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" }
108113
hilt-android-testing = { group = "com.google.dagger", name = "hilt-android-testing", version.ref = "hilt" }
109114
hilt-compiler = { group = "com.google.dagger", name = "hilt-android-compiler", version.ref = "hilt" }

0 commit comments

Comments
 (0)