Skip to content

Commit 4f08bc9

Browse files
committed
update: implement meal api and update to latest build gradle
1 parent eaab5fc commit 4f08bc9

File tree

74 files changed

+1470
-1541
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+1470
-1541
lines changed

app/build.gradle.kts

Lines changed: 56 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,19 @@
1-
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
1+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
22

33
plugins {
4-
id("com.android.application")
5-
id("org.jetbrains.kotlin.android")
6-
id("kotlin-kapt")
4+
alias(libs.plugins.android.application)
5+
alias(libs.plugins.jetbrains.kotlin.android)
6+
alias(libs.plugins.ksp)
7+
alias(libs.plugins.hilt)
8+
}
9+
10+
ksp {
11+
arg("room.schemaLocation", "$projectDir/schemas") // If Using Ksp
12+
}
13+
14+
base {
15+
// Naming APK // AAB
16+
archivesName = "${ProjectSetting.NAME_APK}-${android.defaultConfig.versionCode}"
717
}
818

919
android {
@@ -27,26 +37,17 @@ android {
2737
buildConfigField("String", "DATABASE_NAME", ProjectSetting.DB)
2838
buildConfigField("String", "PREF_NAME", ProjectSetting.PREF)
2939

30-
// Naming APK // AAB
31-
setProperty("archivesBaseName", "${ProjectSetting.NAME_APK}(${versionName})")
32-
33-
// Declaration apps name debug mode
34-
val debugAttribute = "Development"
35-
val nameAppDebug = "${ProjectSetting.NAME_APP} $debugAttribute"
36-
resourceConfigurations += setOf("en", "id")
37-
3840
// Inject app name for debug
39-
resValue("string", "app_name", nameAppDebug)
41+
resValue("string", "app_name", ProjectSetting.NAME_APP_DEBUG)
4042

4143
// Inject admob id for debug
42-
resValue("string", "admob_app_id", AdmobValue.debugAdmobAppId)
43-
resValue("string", "admob_banner", AdmobValue.debugAdmobBanner)
44-
resValue("string", "admob_interstitial", AdmobValue.debugAdmobInterstitial)
45-
resValue("string", "admob_interstitial_video", AdmobValue.debugAdmobInterstitialVideo)
46-
resValue("string", "admob_rewarded", AdmobValue.debugAdmobRewarded)
47-
resValue("string", "admob_rewarded_interstitial", AdmobValue.debugAdmobRewardedInterstitial)
48-
resValue("string", "admob_native_advanced", AdmobValue.debugAdmobNativeAdvanced)
49-
resValue("string", "admob_native_advanced_video", AdmobValue.debugAdmobNativeAdvancedVideo)
44+
resValue("string", "admob_app_id", ProjectAds.Admob.Debug.APP_ID)
45+
46+
// Inject admob banner id for debug
47+
resValue("string", "admob_banner", ProjectAds.Admob.Debug.BANNER_ID)
48+
49+
// Inject admob interstitial id for debug
50+
resValue("string", "admob_interstitial_id", ProjectAds.Admob.Debug.INTERSTITIAL_ID)
5051

5152
}
5253

@@ -75,54 +76,62 @@ android {
7576
signingConfig = signingConfigs.getByName("release")
7677

7778
// Inject app name for release
78-
resValue("string", "app_name", ProjectSetting.APP_NAME)
79-
79+
resValue("string", "app_name", ProjectSetting.NAME_APP)
8080

8181
// Inject admob id for release
82-
resValue("string", "admob_app_id", AdmobValue.releaseAdmobAppId)
83-
resValue("string", "admob_banner", AdmobValue.releaseAdmobBanner)
84-
resValue("string", "admob_interstitial", AdmobValue.releaseAdmobInterstitial)
85-
resValue("string", "admob_interstitial_video", AdmobValue.releaseAdmobInterstitialVideo)
86-
resValue("string", "admob_rewarded", AdmobValue.releaseAdmobRewarded)
87-
resValue("string", "admob_rewarded_interstitial", AdmobValue.releaseAdmobRewardedInterstitial)
88-
resValue("string", "admob_native_advanced", AdmobValue.releaseAdmobNativeAdvanced)
89-
resValue("string", "admob_native_advanced_video", AdmobValue.releaseAdmobNativeAdvancedVideo)
82+
resValue("string", "admob_app_id", ProjectAds.Admob.APP_ID)
83+
84+
// Inject admob banner id for debug
85+
resValue("string", "admob_banner", ProjectAds.Admob.BANNER_ID)
86+
87+
// Inject admob interstitial id for release
88+
resValue("string", "admob_interstitial_id", ProjectAds.Admob.INTERSTITIAL_ID)
89+
9090

9191
}
9292
}
9393

9494
buildFeatures {
9595
viewBinding = true
96+
buildConfig = true
9697
}
9798

9899
compileOptions {
99100
sourceCompatibility = JavaVersion.VERSION_17
100101
targetCompatibility = JavaVersion.VERSION_17
101102
}
102103

103-
tasks.withType<KotlinCompile> {
104-
kotlinOptions {
105-
jvmTarget = "17"
106-
}
107-
}
108104

109105
}
110106

107+
kotlin {
108+
compilerOptions {
109+
jvmTarget.set(JvmTarget.JVM_17)
110+
freeCompilerArgs.add("-opt-in=kotlin.RequiresOptIn")
111+
}
112+
}
111113

112114
dependencies {
113115

114-
implementation(Androidx.constraintLayout)
115-
116-
implementation(Frogo.sdk)
117-
implementation(Frogo.ui)
118-
implementation(Frogo.admob)
119-
implementation(Frogo.recyclerView)
120-
implementation(Frogo.consumeApi)
116+
debugImplementation(libs.github.chucker)
117+
releaseImplementation(libs.github.chucker.no.op)
118+
119+
implementation(libs.frogo.android) {
120+
exclude(
121+
group = "com.github.chuckerteam.chucker",
122+
module = "library"
123+
)
124+
exclude(
125+
group = "com.github.chuckerteam.chucker",
126+
module = "library-no-op"
127+
)
128+
}
121129

122-
implementation(GitHub.glide)
130+
implementation(libs.hilt)
123131

124-
kapt(Androidx.Lifecycle.compiler)
125-
kapt(Androidx.Room.compiler)
126-
kapt(GitHub.glideCompiler)
132+
ksp(libs.hilt.compiler)
133+
ksp(libs.androidx.lifecycle.compiler)
134+
ksp(libs.androidx.room.compiler)
135+
ksp(libs.github.glide.compiler)
127136

128137
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
{
2+
"formatVersion": 1,
3+
"database": {
4+
"version": 1,
5+
"identityHash": "16ee636470004cbbaac4c99d01514456",
6+
"entities": [
7+
{
8+
"tableName": "favorite",
9+
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`table_id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `author` TEXT, `title` TEXT, `description` TEXT, `url` TEXT, `urlToImage` TEXT, `publishedAt` TEXT, `content` TEXT)",
10+
"fields": [
11+
{
12+
"fieldPath": "table_id",
13+
"columnName": "table_id",
14+
"affinity": "INTEGER",
15+
"notNull": true
16+
},
17+
{
18+
"fieldPath": "author",
19+
"columnName": "author",
20+
"affinity": "TEXT"
21+
},
22+
{
23+
"fieldPath": "title",
24+
"columnName": "title",
25+
"affinity": "TEXT"
26+
},
27+
{
28+
"fieldPath": "description",
29+
"columnName": "description",
30+
"affinity": "TEXT"
31+
},
32+
{
33+
"fieldPath": "url",
34+
"columnName": "url",
35+
"affinity": "TEXT"
36+
},
37+
{
38+
"fieldPath": "urlToImage",
39+
"columnName": "urlToImage",
40+
"affinity": "TEXT"
41+
},
42+
{
43+
"fieldPath": "publishedAt",
44+
"columnName": "publishedAt",
45+
"affinity": "TEXT"
46+
},
47+
{
48+
"fieldPath": "content",
49+
"columnName": "content",
50+
"affinity": "TEXT"
51+
}
52+
],
53+
"primaryKey": {
54+
"autoGenerate": true,
55+
"columnNames": [
56+
"table_id"
57+
]
58+
}
59+
}
60+
],
61+
"setupQueries": [
62+
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
63+
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '16ee636470004cbbaac4c99d01514456')"
64+
]
65+
}
66+
}

app/src/main/AndroidManifest.xml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
xmlns:tools="http://schemas.android.com/tools"
4-
android:targetSandboxVersion="1"
5-
tools:targetApi="o">
3+
xmlns:tools="http://schemas.android.com/tools">
64

75
<uses-permission android:name="android.permission.INTERNET" />
6+
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
7+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
8+
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
89

910
<application
1011
android:name=".ProjectApplication"
@@ -18,10 +19,10 @@
1819
android:usesCleartextTraffic="true"
1920
tools:targetApi="n">
2021

21-
<activity android:name=".mvvm.detail.DetailActivity" />
22-
<activity android:name=".mvvm.about.AboutUsActivity" />
22+
<activity android:name=".ui.detail.DetailActivity" />
23+
<activity android:name=".ui.about.AboutUsActivity" />
2324
<activity
24-
android:name=".mvvm.main.MainActivity"
25+
android:name=".ui.main.MainActivity"
2526
android:exported="true">
2627
<intent-filter>
2728
<action android:name="android.intent.action.MAIN" />

app/src/main/java/com/frogobox/kickstart/ProjectApplication.kt

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
package com.frogobox.kickstart
22

33
import android.content.Context
4-
import com.frogobox.kickstart.di.consumeApiModule
5-
import com.frogobox.kickstart.di.repositoryModule
6-
import com.frogobox.kickstart.di.viewModelModule
7-
import com.frogobox.sdk.FrogoKoinApplication
8-
import org.koin.core.KoinApplication
4+
import com.frogobox.kickstart.common.ext.appIsDebug
5+
import com.frogobox.sdk.FrogoApplication
6+
import dagger.hilt.android.HiltAndroidApp
97

108
/**
119
* Created by Faisal Amir on 23/10/2020
@@ -20,7 +18,8 @@ import org.koin.core.KoinApplication
2018
*
2119
*/
2220

23-
class ProjectApplication : FrogoKoinApplication() {
21+
@HiltAndroidApp
22+
class ProjectApplication : FrogoApplication() {
2423

2524
companion object {
2625
val TAG: String = ProjectApplication::class.java.simpleName
@@ -29,8 +28,8 @@ class ProjectApplication : FrogoKoinApplication() {
2928
fun getContext(): Context = instance.applicationContext
3029
}
3130

32-
override fun setupKoinModule(koinApplication: KoinApplication) {
33-
koinApplication.modules(listOf(repositoryModule, viewModelModule, consumeApiModule))
31+
override fun isDebugMode(): Boolean {
32+
return appIsDebug
3433
}
3534

3635
override fun onCreateExt() {

app/src/main/java/com/frogobox/kickstart/core/BaseActivity.kt renamed to app/src/main/java/com/frogobox/kickstart/common/base/BaseActivity.kt

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
package com.frogobox.kickstart.core
1+
package com.frogobox.kickstart.common.base
22

33
import androidx.viewbinding.ViewBinding
4-
import com.frogobox.ad.ui.FrogoAdBindActivity
5-
import com.frogobox.kickstart.R
4+
import com.frogobox.ads.ui.FrogoAdBindActivity
65

76
/**
87
* Created by Faisal Amir
98
* FrogoBox Inc License
109
* =========================================
11-
* ImplementationAdmob
1210
* Copyright (C) 27/11/2019.
1311
* All rights reserved
1412
* -----------------------------------------
@@ -18,13 +16,9 @@ import com.frogobox.kickstart.R
1816
* LinkedIn : linkedin.com/in/faisalamircs
1917
* -----------------------------------------
2018
* FrogoBox Software Industries
21-
* com.frogobox.basemusicplayer.base
2219
*
2320
*/
24-
abstract class BaseActivity<VB : ViewBinding> : FrogoAdBindActivity<VB>(), IBaseActivity {
2521

26-
fun showInterstitial() {
27-
showAdInterstitial(getString(R.string.admob_interstitial))
28-
}
22+
abstract class BaseActivity<VB : ViewBinding> : FrogoAdBindActivity<VB>(), IBaseActivity {
2923

3024
}

app/src/main/java/com/frogobox/kickstart/core/BaseFragment.kt renamed to app/src/main/java/com/frogobox/kickstart/common/base/BaseFragment.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.frogobox.kickstart.core
1+
package com.frogobox.kickstart.common.base
22

33
import androidx.viewbinding.ViewBinding
44
import com.frogobox.sdk.view.FrogoBindFragment
@@ -20,15 +20,12 @@ import com.frogobox.sdk.view.FrogoBindFragment
2020
* com.frogobox.basemusicplayer.activity
2121
*
2222
*/
23+
2324
abstract class BaseFragment<VB : ViewBinding> : FrogoBindFragment<VB>(), IBaseFragment {
2425

2526

2627
protected val mActivity: BaseActivity<*> by lazy {
2728
(activity as BaseActivity<*>)
2829
}
2930

30-
protected fun showInterstitial() {
31-
mActivity.showInterstitial()
32-
}
33-
3431
}

app/src/main/java/com/frogobox/kickstart/core/BaseViewModel.kt renamed to app/src/main/java/com/frogobox/kickstart/common/base/BaseViewModel.kt

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
package com.frogobox.kickstart.core
1+
package com.frogobox.kickstart.common.base
22

3-
import android.app.Application
4-
import com.frogobox.kickstart.source.ProjectDataRepository
5-
import com.frogobox.sdk.view.FrogoViewModel
63
import com.frogobox.sdk.view.FrogoViewModel2
74

85
/**
@@ -22,13 +19,11 @@ import com.frogobox.sdk.view.FrogoViewModel2
2219
* com.frogobox.basemusicplayer.base
2320
*
2421
*/
25-
open class BaseViewModel(
26-
private val repository: ProjectDataRepository
27-
) : FrogoViewModel2() {
22+
23+
open class BaseViewModel() : FrogoViewModel2() {
2824

2925
override fun onClearDisposable() {
3026
super.onClearDisposable()
31-
repository.onClearDisposables()
3227
}
3328

3429
}

app/src/main/java/com/frogobox/kickstart/core/IBaseActivity.kt renamed to app/src/main/java/com/frogobox/kickstart/common/base/IBaseActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.frogobox.kickstart.core
1+
package com.frogobox.kickstart.common.base
22

33

44
/**

app/src/main/java/com/frogobox/kickstart/core/IBaseFragment.kt renamed to app/src/main/java/com/frogobox/kickstart/common/base/IBaseFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.frogobox.kickstart.core
1+
package com.frogobox.kickstart.common.base
22

33
/**
44
* Created by Faisal Amir on 13/05/2020
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.frogobox.kickstart.common.callback
2+
3+
/**
4+
* Created by faisalamircs on 09/09/2025
5+
* -----------------------------------------
6+
* Name : Muhammad Faisal Amir
7+
* E-mail : [email protected]
8+
* Github : github.com/amirisback
9+
* -----------------------------------------
10+
*/
11+
12+
13+
sealed class Resource<T>(val data: T? = null, val message: String? = null) {
14+
class Success<T>(data: T) : Resource<T>(data)
15+
class Loading<T>(data: T? = null) : Resource<T>(data)
16+
class Error<T>(message: String, data: T? = null) : Resource<T>(data, message)
17+
}

0 commit comments

Comments
 (0)