TP-12345 | Refactor | Publishing | Spotless (#152)

This commit is contained in:
Shivam Goyal
2024-05-05 08:40:19 -07:00
committed by GitHub
parent 5a2c261fd1
commit ef45997147
33 changed files with 323 additions and 204 deletions

2
.github/pull_request_template.md vendored Normal file
View File

@@ -0,0 +1,2 @@
## Summary
Please include a summary of the change, relevant motivation, and context here.

41
.github/workflows/branch_cut.yml vendored Normal file
View File

@@ -0,0 +1,41 @@
name: Branch Cut CI
on:
workflow_dispatch:
inputs:
version:
description: Version (e.g., 1.0.0)
required: true
type: string
jobs:
print-inputs:
runs-on: [ default ]
steps:
- name: Print Inputs
run: |
echo "| Input Key | Input Value |" >> $GITHUB_STEP_SUMMARY
echo "| :---: | :---: |" >> $GITHUB_STEP_SUMMARY
echo "| Version | ${{ inputs.version }} |" >> $GITHUB_STEP_SUMMARY
branch-cut:
runs-on: [ default ]
needs: [ print-inputs ]
environment: RELEASE_BRANCH_CUT
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
token: ${{ secrets.GH_PAT }}
- name: Setup Git Credentials for @${{ github.actor }}
run: |
export GITHUB_EMAIL=$(echo "$GITHUB_ACTOR@navi.com" | sed 's/-/./g' | sed 's/_navi//g')
git config --global user.email "$GITHUB_EMAIL"
git config --global user.name "$GITHUB_ACTOR"
- name: Checkout release-${{ inputs.version }} from ${{ github.ref_name }}
run: git checkout -b release-${{ inputs.version }}
- name: Update Version (${{ inputs.version }})
run: sed -i 's/def VERSION = "[0-9].*"/def VERSION = "${{ inputs.version }}"/g' navi-alfred/build.gradle
- name: Commit Version Changes
run: git commit navi-alfred/build.gradle -m "TP-52887 | Bump Project Version to ${{ inputs.version }}"
- name: Push release-${{ inputs.version }} Branch
run: git push -u origin release-${{ inputs.version }}

25
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
name: Build CI
on:
push:
branches: [ master, release-* ]
pull_request:
branches: [ master, release-* ]
merge_group:
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
build-debug:
uses: ./.github/workflows/generate_aar.yml
with:
type: debug
destination: github
build-release:
if: github.event_name == 'push'
uses: ./.github/workflows/generate_aar.yml
with:
type: release
destination: github

85
.github/workflows/generate_aar.yml vendored Normal file
View File

@@ -0,0 +1,85 @@
name: Generate AAR CI
on:
workflow_dispatch:
inputs:
type:
description: Build Type
required: true
type: choice
options:
- debug
- release
destination:
description: Upload Destination
required: true
type: choice
options:
- github
- nexus
nexus_path:
description: Nexus Path (if destination is nexus)
required: false
type: choice
options:
- maven-snapshots
- maven-releases
version:
description: Version (e.g., 1.0.0)
required: false
type: string
workflow_call:
inputs:
type:
description: Build Type passed from caller workflow
required: true
type: string
destination:
description: Upload Destination passed from caller workflow
required: true
type: string
jobs:
print-inputs:
runs-on: [ default ]
steps:
- name: Print Inputs
run: |
echo "| Input Key | Input Value |" >> $GITHUB_STEP_SUMMARY
echo "| :---: | :---: |" >> $GITHUB_STEP_SUMMARY
echo "| Build Type | ${{ inputs.type }} |" >> $GITHUB_STEP_SUMMARY
echo "| Upload Destination | ${{ inputs.destination }} |" >> $GITHUB_STEP_SUMMARY
echo "| Nexus Path | ${{ inputs.nexus_path || '🚫' }} |" >> $GITHUB_STEP_SUMMARY
echo "| Version | ${{ inputs.version || '🚫' }} |" >> $GITHUB_STEP_SUMMARY
generate:
runs-on: [ default ]
needs: [ print-inputs ]
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Override Version
if: github.event_name == 'workflow_dispatch' && inputs.version != ''
run: sed -i 's/def VERSION = "[0-9].*"/def VERSION = "${{ inputs.version }}"/g' navi-alfred/build.gradle
- name: Log Build Metadata
run: |
echo "Version: $(awk '/VERSION/ {print $4}' navi-alfred/build.gradle | tr -d '"')"
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 17
distribution: temurin
- name: Set up Android SDK
uses: navi-synced-actions/setup-android@v3
- name: Grant Execute Permission for Gradle Wrapper
run: chmod +x gradlew
- name: Build - AAR - ${{ inputs.type }}
run: ./gradlew :navi-alfred:assemble${{ inputs.type }} --stacktrace
- name: Upload - AAR - ${{ inputs.type }} - GitHub
uses: actions/upload-artifact@v4
with:
name: aar-${{ inputs.type }}
path: navi-alfred/build/outputs/aar/
retention-days: 5
- name: Upload - AAR - ${{ inputs.type }} - Nexus
if: inputs.destination == 'nexus' && inputs.nexus_path != ''
run: ./gradlew publish -PNEXUS_URL=https://nexus.cmd.navi-tech.in/repository/${{ inputs.nexus_path }} -PNEXUS_USERNAME=${{ secrets.NEXUS_USERNAME }} -PNEXUS_PASSWORD=${{ secrets.NEXUS_PASSWORD }} -PBUILD_TYPE=${{ inputs.type }}

View File

@@ -1,31 +0,0 @@
name: Master pull request CI
on:
pull_request:
branches: [ master ]
merge_group:
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
build-qa-debug:
runs-on: [ default ]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Log Build Metadata
run: |
echo "Commit SHA: ${{ github.sha }}"
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 17
distribution: adopt
- name: Setup Android SDK
uses: navi-synced-actions/setup-android@v2
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Assemble with Stacktrace
run: ./gradlew assembleDebug --stacktrace

View File

@@ -1,32 +0,0 @@
name: Master push CI
on:
push:
branches: [ master ]
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
build-qa-debug:
runs-on: [ default ]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Log Build Metadata
run: |
echo "Commit SHA: ${{ github.sha }}"
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 17
distribution: adopt
- name: Setup Android SDK
uses: navi-synced-actions/setup-android@v2
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Assemble with Stacktrace
run: ./gradlew assembleRelease --stacktrace
- name: Upload to nexus
run: ./gradlew publish -PIS_SNAPSHOT=false -PNEXUS_URL=https://nexus.cmd.navi-tech.in/repository/maven-releases -PNEXUS_USERNAME=${{ secrets.NEXUS_USERNAME }} -PNEXUS_PASSWORD=${{ secrets.NEXUS_PASSWORD }}

View File

@@ -1,31 +0,0 @@
name: Publish AAR CI
on:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
build-qa-debug:
runs-on: [ default ]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Log Build Metadata
run: |
echo "Commit SHA: ${{ github.sha }}"
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 17
distribution: temurin
- name: Setup Android SDK
uses: navi-synced-actions/setup-android@v2
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Assemble with Stacktrace
run: ./gradlew :navi-alfred:assembleRelease --stacktrace
- name: Upload to nexus
run: ./gradlew publish -PIS_SNAPSHOT=true -PNEXUS_URL=https://nexus.cmd.navi-tech.in/repository/maven-snapshots -PNEXUS_USERNAME=${{ secrets.NEXUS_USERNAME }} -PNEXUS_PASSWORD=${{ secrets.NEXUS_PASSWORD }}

28
.github/workflows/spotless.yml vendored Normal file
View File

@@ -0,0 +1,28 @@
name: Spotless CI
on:
pull_request:
branches: [ master ]
merge_group:
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
spotless:
runs-on: [ default ]
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 17
distribution: temurin
- name: Set up Android SDK
uses: navi-synced-actions/setup-android@v3
- name: Grant Execute Permission for Gradle Wrapper
run: chmod +x gradlew
- name: Run Spotless Check
run: ./gradlew spotlessCheck

9
app/.gitignore vendored
View File

@@ -1,10 +1 @@
/.idea/
/build /build
/captures
/local.properties
*.iml
.externalNativeBuild
.cxx
.gradle
.DS_Store
local.properties

View File

@@ -3,27 +3,47 @@ plugins {
alias libs.plugins.kotlin.android alias libs.plugins.kotlin.android
} }
def VERSION_CODE = 1
def VERSION_NAME = "1.0.0"
android { android {
namespace 'com.alfred.demo' namespace 'com.navi.alfred.demo'
compileSdk 34 compileSdk 34
defaultConfig { defaultConfig {
applicationId 'com.navi.alfred.demo'
minSdk 21 minSdk 21
targetSdk 33 targetSdk 33
versionCode VERSION_CODE
versionName VERSION_NAME
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary true
}
} }
signingConfigs {
debug {
storeFile file('../keystore/navi-debug-key.jks')
storePassword "android"
keyAlias "androiddebugkey"
keyPassword "android"
}
release {
storeFile file('../keystore/navi-non-prod-release-key.jks')
storePassword "android"
keyAlias "navi"
keyPassword "android"
}
}
buildFeatures { buildFeatures {
buildConfig true buildConfig true
} }
buildTypes { buildTypes {
release { release {
minifyEnabled false debuggable false
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
} }
} }
compileOptions { compileOptions {
@@ -31,30 +51,22 @@ android {
targetCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17
} }
kotlinOptions { kotlinOptions {
freeCompilerArgs += ["-Xstring-concat=inline"]
jvmTarget = '17' jvmTarget = '17'
} }
packagingOptions { packagingOptions {
resources { resources {
excludes += '/META-INF/{AL2.0,LGPL2.1}' excludes += "/META-INF/{AL2.0,LGPL2.1}"
} }
} }
} }
dependencies { dependencies {
implementation project(':navi-alfred') implementation project(':navi-alfred')
implementation libs.android.material implementation libs.android.material
implementation libs.androidx.appcompat implementation libs.androidx.appcompat
implementation libs.androidx.core.ktx implementation libs.androidx.core.ktx
implementation libs.androidx.lifecycle.viewmodel.ktx implementation libs.androidx.lifecycle.viewmodel.ktx
implementation libs.anrwatchdog implementation libs.anrwatchdog
implementation libs.gson implementation libs.gson
androidTestImplementation libs.androidx.test.espresso.core
androidTestImplementation libs.androidx.test.junit
testImplementation libs.junit
} }

View File

@@ -11,12 +11,13 @@
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<application <application
android:name=".MainApplication" android:name=".AlfredDemoApplication"
android:allowBackup="true" android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules" android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules" android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config"
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.Light" android:theme="@style/Theme.AppCompat.Light"
@@ -24,10 +25,10 @@
<activity <activity
android:name=".activity.MainActivity" android:name=".activity.MainActivity"
android:exported="true" android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat.Light"> android:theme="@style/Theme.AppCompat.Light">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> </activity>

View File

@@ -1,23 +1,23 @@
/* /*
* *
* * Copyright © 2023 by Navi Technologies Limited * * Copyright © 2023-2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential * * All rights reserved. Strictly confidential
* *
*/ */
package com.alfred.demo package com.navi.alfred.demo
import android.app.Activity import android.app.Activity
import android.app.Application import android.app.Application
import android.content.IntentFilter import android.content.IntentFilter
import android.os.Bundle import android.os.Bundle
import android.util.Log import android.util.Log
import com.alfred.demo.activity.MainActivity
import com.alfred.demo.activity.SWWActivity
import com.github.anrwatchdog.ANRWatchDog import com.github.anrwatchdog.ANRWatchDog
import com.navi.alfred.AlfredConfig import com.navi.alfred.AlfredConfig
import com.navi.alfred.AlfredManager import com.navi.alfred.AlfredManager
import com.navi.alfred.AlfredManager.isAlfredRecordingEnabled import com.navi.alfred.AlfredManager.isAlfredRecordingEnabled
import com.navi.alfred.demo.activity.MainActivity
import com.navi.alfred.demo.activity.SWWActivity
import com.navi.alfred.utils.AlfredConstants import com.navi.alfred.utils.AlfredConstants
import com.navi.alfred.utils.AlfredConstants.BROADCAST_ACTION_TYPE import com.navi.alfred.utils.AlfredConstants.BROADCAST_ACTION_TYPE
import com.navi.alfred.utils.log import com.navi.alfred.utils.log
@@ -25,7 +25,7 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
class MainApplication : Application(), Application.ActivityLifecycleCallbacks { class AlfredDemoApplication : Application(), Application.ActivityLifecycleCallbacks {
private var appForegroundCounter: Int = 0 private var appForegroundCounter: Int = 0
override fun onCreate() { override fun onCreate() {

View File

@@ -5,7 +5,7 @@
* *
*/ */
package com.alfred.demo package com.navi.alfred.demo
import android.content.BroadcastReceiver import android.content.BroadcastReceiver
import android.content.Context import android.content.Context

View File

@@ -1,19 +1,19 @@
/* /*
* *
* * Copyright © 2023 by Navi Technologies Limited * * Copyright © 2023-2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential * * All rights reserved. Strictly confidential
* *
*/ */
package com.alfred.demo.activity package com.navi.alfred.demo.activity
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.MotionEvent import android.view.MotionEvent
import android.widget.Button import android.widget.Button
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.alfred.demo.R
import com.navi.alfred.AlfredManager import com.navi.alfred.AlfredManager
import com.navi.alfred.demo.R
class MainActivity : AppCompatActivity() { class MainActivity : AppCompatActivity() {

View File

@@ -1,18 +1,18 @@
/* /*
* *
* * Copyright © 2023 by Navi Technologies Limited * * Copyright © 2023-2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential * * All rights reserved. Strictly confidential
* *
*/ */
package com.alfred.demo.activity package com.navi.alfred.demo.activity
import android.os.Bundle import android.os.Bundle
import android.view.MotionEvent import android.view.MotionEvent
import android.widget.Button import android.widget.Button
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.alfred.demo.R
import com.navi.alfred.AlfredManager import com.navi.alfred.AlfredManager
import com.navi.alfred.demo.R
class SWWActivity : AppCompatActivity() { class SWWActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
@@ -21,13 +21,20 @@ class SWWActivity : AppCompatActivity() {
val button = findViewById<Button>(R.id.sww_button) val button = findViewById<Button>(R.id.sww_button)
button.setOnClickListener { button.setOnClickListener {
onSSWError("SWW Button Clicked", "400", "SWW Activity", "Alfred Demo App", 400, "WIFI") onSSWError(
reason = "SWW Button Clicked",
code = "400",
screenName = "SWW Activity",
moduleName = "Alfred Demo App",
statusCode = 400,
networkType = "WIFI"
)
} }
} }
override fun dispatchTouchEvent(ev: MotionEvent?): Boolean { override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
AlfredManager.handleTouchEvent( AlfredManager.handleTouchEvent(
ev, currentTouchEvent = ev,
screenName = "Demo Activity", screenName = "Demo Activity",
moduleName = "Alfred Demo App", moduleName = "Alfred Demo App",
) )

View File

@@ -7,7 +7,7 @@
--> -->
<resources> <resources>
<string name="app_name">Alfred Android</string> <string name="app_name">Alfred</string>
<string name="crash">Crash Occurred</string> <string name="crash">Crash Occurred</string>
<string name="anr">Anr Occurred</string> <string name="anr">Anr Occurred</string>
<string name="app_background">App In Background</string> <string name="app_background">App In Background</string>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~
~ * Copyright © 2024 by Navi Technologies Limited
~ * All rights reserved. Strictly confidential
~
-->
<network-security-config>
<debug-overrides>
<trust-anchors>
<certificates src="system" />
<certificates
overridePins="true"
src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>

View File

@@ -10,3 +10,25 @@ plugins {
apply from: 'spotless.gradle' apply from: 'spotless.gradle'
apply from: 'projectDependencyGraph.gradle' apply from: 'projectDependencyGraph.gradle'
allprojects {
repositories {
google()
mavenCentral()
gradlePluginPortal()
maven {
url 'https://nexus.cmd.navi-tech.in/repository/maven-snapshots'
credentials {
username 'nexus-user'
password 'nexus-user'
}
}
maven {
url 'https://nexus.cmd.navi-tech.in/repository/maven-releases'
credentials {
username 'nexus-user'
password 'nexus-user'
}
}
}
}

View File

@@ -4,8 +4,6 @@ androidGradlePlugin = "8.4.0"
androidx-appcompat = "1.6.1" androidx-appcompat = "1.6.1"
androidx-core-ktx = "1.8.0" androidx-core-ktx = "1.8.0"
androidx-lifecycle = "2.6.1" androidx-lifecycle = "2.6.1"
androidx-test-espresso = "3.5.1"
androidx-test-junit = "1.1.5"
androidx-workRuntimeKtx = "2.8.1" androidx-workRuntimeKtx = "2.8.1"
anrwatchdog = "1.4.0" anrwatchdog = "1.4.0"
chucker = "4.0.0" chucker = "4.0.0"
@@ -13,7 +11,6 @@ firebase-bom = "32.8.1"
firebase-crashlytics = "2.9.9" firebase-crashlytics = "2.9.9"
gson = "2.10.1" gson = "2.10.1"
jakewharton-timber = "5.0.1" jakewharton-timber = "5.0.1"
junit = "4.13.2"
kotlin = "1.9.23" kotlin = "1.9.23"
ksp = "1.9.23-1.0.20" ksp = "1.9.23-1.0.20"
loggingInterceptor = "4.12.0" loggingInterceptor = "4.12.0"
@@ -33,10 +30,6 @@ androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-view
androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" } androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" }
androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" } androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" }
androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" } androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" }
androidx-room-testing = { module = "androidx.room:room-testing", version.ref = "room" }
androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidx-test-espresso" }
androidx-test-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-test-junit" }
androidx-workRuntime-ktx = { module = "androidx.work:work-runtime-ktx", version.ref = "androidx-workRuntimeKtx" } androidx-workRuntime-ktx = { module = "androidx.work:work-runtime-ktx", version.ref = "androidx-workRuntimeKtx" }
@@ -53,8 +46,6 @@ gson = { module = "com.google.code.gson:gson", version.ref = "gson" }
jakewharton-timber = { module = "com.jakewharton.timber:timber", version.ref = "jakewharton-timber" } jakewharton-timber = { module = "com.jakewharton.timber:timber", version.ref = "jakewharton-timber" }
junit = { module = "junit:junit", version.ref = "junit" }
logging-interceptor = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "loggingInterceptor" } logging-interceptor = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "loggingInterceptor" }
retrofit-converter-gson = { module = "com.squareup.retrofit2:converter-gson", version.ref = "retrofit" } retrofit-converter-gson = { module = "com.squareup.retrofit2:converter-gson", version.ref = "retrofit" }

BIN
keystore/navi-debug-key.jks Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -16,8 +16,8 @@ android {
minSdk 21 minSdk 21
targetSdk 33 targetSdk 33
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro" consumerProguardFiles "consumer-rules.pro"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }
buildFeatures { buildFeatures {
@@ -34,6 +34,7 @@ android {
targetCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17
} }
kotlinOptions { kotlinOptions {
freeCompilerArgs += ["-Xstring-concat=inline"]
jvmTarget = '17' jvmTarget = '17'
} }
} }
@@ -55,18 +56,15 @@ publishing {
publications { publications {
if (project.hasProperty('NEXUS_URL')) { if (project.hasProperty('NEXUS_URL')) {
maven(MavenPublication) { maven(MavenPublication) {
if ("$NEXUS_URL".contains("maven-releases")) {
version = "$VERSION"
} else {
version = "$VERSION-SNAPSHOT"
}
artifactId = "alfred" artifactId = "alfred"
groupId = "com.navi.android" groupId = "com.navi.android"
if ("$IS_SNAPSHOT" == "false") { artifact("build/outputs/aar/navi-alfred-${BUILD_TYPE}.aar")
version = "$VERSION"
println("https://nexus.cmd.navi-tech.in/#browse/browse:maven-releases:com%2Fnavi%2Fandroid%2Falfred%2F$version")
} else {
version = "$VERSION-SNAPSHOT"
println("https://nexus.cmd.navi-tech.in/#browse/browse:maven-snapshots:com%2Fnavi%2Fandroid%2Falfred%2F$version")
}
artifact("build/outputs/aar/navi-alfred-release.aar")
pom.withXml { pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies') def dependenciesNode = asNode().appendNode('dependencies')
@@ -84,35 +82,24 @@ publishing {
dependencies { dependencies {
api platform(libs.firebase.bom) api platform(libs.firebase.bom)
api libs.firebase.analytics
api libs.firebase.crashlytics
api libs.logging.interceptor
api libs.retrofit.converter.gson
api libs.retrofit.retrofit
implementation libs.android.material implementation libs.android.material
implementation libs.androidx.appcompat implementation libs.androidx.appcompat
implementation libs.androidx.core.ktx implementation libs.androidx.core.ktx
implementation libs.androidx.room.ktx implementation libs.androidx.room.ktx
implementation libs.androidx.room.runtime implementation libs.androidx.room.runtime
implementation libs.androidx.workRuntime.ktx implementation libs.androidx.workRuntime.ktx
implementation libs.gson implementation libs.gson
implementation libs.jakewharton.timber implementation libs.jakewharton.timber
debugImplementation libs.chucker.library debugImplementation libs.chucker.library
releaseImplementation libs.chucker.libraryNoOp releaseImplementation libs.chucker.libraryNoOp
api libs.firebase.analytics
api libs.firebase.crashlytics
api libs.logging.interceptor
api libs.retrofit.converter.gson
api libs.retrofit.retrofit
ksp libs.androidx.room.compiler ksp libs.androidx.room.compiler
androidTestImplementation libs.androidx.test.espresso.core
androidTestImplementation libs.androidx.test.junit
testImplementation libs.androidx.room.testing
testImplementation libs.junit
} }

View File

@@ -1,3 +1,10 @@
/*
*
* * Copyright © 2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
package com.navi.alfred.network package com.navi.alfred.network
object AlfredApiLogsManager { object AlfredApiLogsManager {

View File

@@ -1,3 +1,10 @@
/*
*
* * Copyright © 2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
package com.navi.alfred.network package com.navi.alfred.network
import okhttp3.Request import okhttp3.Request

View File

@@ -68,7 +68,8 @@ object AlfredFailureRetrofitProvider {
.message(errorMessage.message.orEmpty()) .message(errorMessage.message.orEmpty())
.build() .build()
} }
AlfredApiLogsManager.getAlfredApiLogsProvider()?.sendApiLog(request = request, response = response) AlfredApiLogsManager.getAlfredApiLogsProvider()
?.sendApiLog(request = request, response = response)
response response
} }

View File

@@ -78,7 +78,8 @@ object AlfredRetrofitProvider {
.message(errorMessage.message.orEmpty()) .message(errorMessage.message.orEmpty())
.build() .build()
} }
AlfredApiLogsManager.getAlfredApiLogsProvider()?.sendApiLog(request = request, response = response) AlfredApiLogsManager.getAlfredApiLogsProvider()
?.sendApiLog(request = request, response = response)
response response
} }

View File

@@ -408,7 +408,8 @@ internal fun sendAlfredSessionEvent(
errorType = API_ERROR, errorType = API_ERROR,
requestUrl = DEFAULT_SEND_SESSION_POST_URL, requestUrl = DEFAULT_SEND_SESSION_POST_URL,
requestMethod = POST_METHOD, requestMethod = POST_METHOD,
zipName = request.session_upload_event_attributes.eventId?.let { listOf(it) }, zipName =
request.session_upload_event_attributes.eventId?.let { listOf(it) },
errorStatusCode = response.code().toLong(), errorStatusCode = response.code().toLong(),
errorMessage = response.message(), errorMessage = response.message(),
errorName = INGEST_SESSION_FAILURE, errorName = INGEST_SESSION_FAILURE,

View File

@@ -43,7 +43,8 @@ internal fun handleException(e: Throwable): ErrorMessage {
internal fun isNetworkAvailable(): Boolean { internal fun isNetworkAvailable(): Boolean {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val connectivityManager = val connectivityManager =
AlfredManager.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager AlfredManager.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE)
as ConnectivityManager
val network = connectivityManager.activeNetwork ?: return false val network = connectivityManager.activeNetwork ?: return false
val activeNetwork = connectivityManager.getNetworkCapabilities(network) ?: return false val activeNetwork = connectivityManager.getNetworkCapabilities(network) ?: return false
return when { return when {
@@ -53,7 +54,8 @@ internal fun isNetworkAvailable(): Boolean {
} }
} else { } else {
val connectivityManager = val connectivityManager =
AlfredManager.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager AlfredManager.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE)
as ConnectivityManager
val networkInfo = connectivityManager.activeNetworkInfo val networkInfo = connectivityManager.activeNetworkInfo
return networkInfo != null && networkInfo.isConnected return networkInfo != null && networkInfo.isConnected
} }

View File

@@ -212,10 +212,7 @@ internal suspend fun captureScreen(
} else { } else {
if (rootView != null) { if (rootView != null) {
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {
captureComposeViewWithMasking( captureComposeViewWithMasking(canvas, rootView)
canvas,
rootView
)
} }
} else { } else {
withContext(Dispatchers.Main) { v.draw(canvas) } withContext(Dispatchers.Main) { v.draw(canvas) }
@@ -319,14 +316,10 @@ internal suspend fun captureBottomSheet(
} }
} }
internal fun captureComposeViewWithMasking( internal fun captureComposeViewWithMasking(canvas: Canvas, rootView: View) {
canvas: Canvas,
rootView: View
) {
rootView.draw(canvas) rootView.draw(canvas)
val sensitiveCoordinates = val sensitiveCoordinates = AlfredManager.sensitiveComposeRepository.sensitiveCoordinates
AlfredManager.sensitiveComposeRepository.sensitiveCoordinates
val paint = Paint() val paint = Paint()
paint.color = Color.BLACK paint.color = Color.BLACK

View File

@@ -8,13 +8,5 @@ pluginManagement {
rootProject.name = "alfred" rootProject.name = "alfred"
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
include ':app' include ':app'
include ':navi-alfred' include ':navi-alfred'

View File

@@ -1,6 +1,4 @@
spotless { spotless {
ratchetFrom 'origin/master'
format 'misc', { format 'misc', {
target '**/*.gradle', '**/*.md', '**/.gitignore' target '**/*.gradle', '**/*.md', '**/.gitignore'