Merge branch 'master' into udc
This commit is contained in:
@@ -3,7 +3,7 @@ jobs:
|
|||||||
build:
|
build:
|
||||||
working_directory: ~/code
|
working_directory: ~/code
|
||||||
docker:
|
docker:
|
||||||
- image: cimg/android:2023.02.1
|
- image: cimg/android:2023.04.1
|
||||||
environment:
|
environment:
|
||||||
GRADLE_OPTS: -Dorg.gradle.workers.max=1 -Dorg.gradle.daemon=false -Dkotlin.compiler.execution.strategy="in-process"
|
GRADLE_OPTS: -Dorg.gradle.workers.max=1 -Dorg.gradle.daemon=false -Dkotlin.compiler.execution.strategy="in-process"
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
@@ -9,12 +9,6 @@
|
|||||||
|
|
||||||
Connecting things to your VPN made simple. Share your VPN connection over hotspot or repeater. (**root required**)
|
Connecting things to your VPN made simple. Share your VPN connection over hotspot or repeater. (**root required**)
|
||||||
|
|
||||||
| Release channel | [GitHub](https://github.com/Mygod/VPNHotspot/releases) | [Google Play](https://play.google.com/store/apps/details?id=be.mygod.vpnhotspot) ([beta](https://play.google.com/apps/testing/be.mygod.vpnhotspot)) |
|
|
||||||
|---------------------------------------------------------|:------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------------------:|
|
|
||||||
| Auto update | Email updates via watching releases | ✓ |
|
|
||||||
| In-app update channel | GitHub | Google Play |
|
|
||||||
| [Sponsor/Donation](https://github.com/sponsors/Mygod) | ✓ | Google Play In-App Purchases only |
|
|
||||||
|
|
||||||
This app is useful for:
|
This app is useful for:
|
||||||
|
|
||||||
* Connecting things that don't support VPN like Chromecasts behind corporate firewalls;
|
* Connecting things that don't support VPN like Chromecasts behind corporate firewalls;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id("com.android.application") version "8.1.0-alpha08" apply false
|
id("com.android.application") version "8.1.0-alpha11" apply false
|
||||||
id("com.github.ben-manes.versions") version "0.46.0"
|
id("com.github.ben-manes.versions") version "0.46.0"
|
||||||
id("org.jetbrains.kotlin.android") version "1.8.10" apply false
|
id("org.jetbrains.kotlin.android") version "1.8.20" apply false
|
||||||
}
|
}
|
||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
|
|||||||
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
4
gradlew
vendored
4
gradlew
vendored
@@ -144,7 +144,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
|||||||
case $MAX_FD in #(
|
case $MAX_FD in #(
|
||||||
max*)
|
max*)
|
||||||
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||||
# shellcheck disable=SC3045
|
# shellcheck disable=SC3045
|
||||||
MAX_FD=$( ulimit -H -n ) ||
|
MAX_FD=$( ulimit -H -n ) ||
|
||||||
warn "Could not query maximum file descriptor limit"
|
warn "Could not query maximum file descriptor limit"
|
||||||
esac
|
esac
|
||||||
@@ -152,7 +152,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
|||||||
'' | soft) :;; #(
|
'' | soft) :;; #(
|
||||||
*)
|
*)
|
||||||
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||||
# shellcheck disable=SC3045
|
# shellcheck disable=SC3045
|
||||||
ulimit -n "$MAX_FD" ||
|
ulimit -n "$MAX_FD" ||
|
||||||
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ android {
|
|||||||
put("room.incremental", "true")
|
put("room.incremental", "true")
|
||||||
put("room.schemaLocation", "$projectDir/schemas")
|
put("room.schemaLocation", "$projectDir/schemas")
|
||||||
}
|
}
|
||||||
buildConfigField("boolean", "DONATIONS", "true")
|
|
||||||
}
|
}
|
||||||
buildFeatures {
|
buildFeatures {
|
||||||
buildConfig = true
|
buildConfig = true
|
||||||
@@ -65,35 +64,34 @@ android {
|
|||||||
create("google") {
|
create("google") {
|
||||||
dimension = "freedom"
|
dimension = "freedom"
|
||||||
versionNameSuffix = "-g"
|
versionNameSuffix = "-g"
|
||||||
buildConfigField("boolean", "DONATIONS", "false")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sourceSets.getByName("androidTest").assets.srcDir("$projectDir/schemas")
|
sourceSets.getByName("androidTest").assets.srcDir("$projectDir/schemas")
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
val lifecycleVersion = "2.6.0"
|
val lifecycleVersion = "2.6.1"
|
||||||
val roomVersion = "2.5.0"
|
val roomVersion = "2.5.1"
|
||||||
|
|
||||||
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.2")
|
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.3")
|
||||||
kapt("androidx.room:room-compiler:$roomVersion")
|
kapt("androidx.room:room-compiler:$roomVersion")
|
||||||
implementation(kotlin("stdlib-jdk8"))
|
implementation(kotlin("stdlib-jdk8"))
|
||||||
implementation("androidx.browser:browser:1.5.0")
|
implementation("androidx.browser:browser:1.5.0")
|
||||||
implementation("androidx.core:core-ktx:1.9.0")
|
implementation("androidx.core:core-ktx:1.10.0")
|
||||||
implementation("androidx.fragment:fragment-ktx:1.5.5")
|
implementation("androidx.fragment:fragment-ktx:1.5.6")
|
||||||
implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycleVersion")
|
implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycleVersion")
|
||||||
implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycleVersion")
|
implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycleVersion")
|
||||||
implementation("androidx.preference:preference:1.2.0")
|
implementation("androidx.preference:preference:1.2.0")
|
||||||
implementation("androidx.room:room-ktx:$roomVersion")
|
implementation("androidx.room:room-ktx:$roomVersion")
|
||||||
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
|
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
|
||||||
implementation("be.mygod.librootkotlinx:librootkotlinx:1.0.2")
|
implementation("be.mygod.librootkotlinx:librootkotlinx:1.0.3")
|
||||||
implementation("com.android.billingclient:billing-ktx:5.1.0")
|
implementation("com.android.billingclient:billing-ktx:5.2.0")
|
||||||
implementation("com.github.tiann:FreeReflection:3.1.0")
|
implementation("com.github.tiann:FreeReflection:3.1.0")
|
||||||
implementation("com.google.android.gms:play-services-base:18.2.0") // fix for GoogleApiActivity crash
|
implementation("com.google.android.gms:play-services-base:18.2.0") // fix for GoogleApiActivity crash @ 18.1.0+
|
||||||
implementation("com.google.android.gms:play-services-oss-licenses:17.0.0")
|
implementation("com.google.android.gms:play-services-oss-licenses:17.0.0")
|
||||||
implementation("com.google.android.material:material:1.8.0")
|
implementation("com.google.android.material:material:1.8.0")
|
||||||
implementation("com.google.firebase:firebase-analytics-ktx:21.2.0")
|
implementation("com.google.firebase:firebase-analytics-ktx:21.2.1")
|
||||||
implementation("com.google.firebase:firebase-crashlytics:18.3.5")
|
implementation("com.google.firebase:firebase-crashlytics:18.3.6")
|
||||||
implementation("com.google.zxing:core:3.5.1")
|
implementation("com.google.zxing:core:3.5.1")
|
||||||
implementation("com.jakewharton.timber:timber:5.0.1")
|
implementation("com.jakewharton.timber:timber:5.0.1")
|
||||||
implementation("com.linkedin.dexmaker:dexmaker:2.28.3")
|
implementation("com.linkedin.dexmaker:dexmaker:2.28.3")
|
||||||
|
|||||||
@@ -5,14 +5,25 @@ import android.view.LayoutInflater
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.ArrayAdapter
|
import android.widget.ArrayAdapter
|
||||||
import android.widget.Button
|
|
||||||
import androidx.appcompat.app.AppCompatDialogFragment
|
import androidx.appcompat.app.AppCompatDialogFragment
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import be.mygod.vpnhotspot.App.Companion.app
|
import be.mygod.vpnhotspot.App.Companion.app
|
||||||
import be.mygod.vpnhotspot.databinding.FragmentEbegBinding
|
import be.mygod.vpnhotspot.databinding.FragmentEbegBinding
|
||||||
import be.mygod.vpnhotspot.util.launchUrl
|
import be.mygod.vpnhotspot.util.launchUrl
|
||||||
import be.mygod.vpnhotspot.widget.SmartSnackbar
|
import be.mygod.vpnhotspot.widget.SmartSnackbar
|
||||||
import com.android.billingclient.api.*
|
import com.android.billingclient.api.BillingClient
|
||||||
|
import com.android.billingclient.api.BillingClientStateListener
|
||||||
|
import com.android.billingclient.api.BillingFlowParams
|
||||||
|
import com.android.billingclient.api.BillingResult
|
||||||
|
import com.android.billingclient.api.ConsumeParams
|
||||||
|
import com.android.billingclient.api.ProductDetails
|
||||||
|
import com.android.billingclient.api.Purchase
|
||||||
|
import com.android.billingclient.api.PurchasesUpdatedListener
|
||||||
|
import com.android.billingclient.api.QueryProductDetailsParams
|
||||||
|
import com.android.billingclient.api.QueryPurchasesParams
|
||||||
|
import com.android.billingclient.api.consumePurchase
|
||||||
|
import com.android.billingclient.api.queryProductDetails
|
||||||
|
import com.android.billingclient.api.queryPurchasesAsync
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.GlobalScope
|
import kotlinx.coroutines.GlobalScope
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@@ -94,7 +105,7 @@ class EBegFragment : AppCompatDialogFragment() {
|
|||||||
}.build()))
|
}.build()))
|
||||||
}.build()) else SmartSnackbar.make(R.string.donations__google_android_market_not_supported).show()
|
}.build()) else SmartSnackbar.make(R.string.donations__google_android_market_not_supported).show()
|
||||||
}
|
}
|
||||||
if (BuildConfig.DONATIONS) (binding.donationsMoreStub.inflate() as Button).setOnClickListener {
|
binding.donationsMoreDonateButton.setOnClickListener {
|
||||||
requireContext().launchUrl("https://mygod.be/donate/")
|
requireContext().launchUrl("https://mygod.be/donate/")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,11 +77,11 @@
|
|||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<ViewStub
|
<Button
|
||||||
android:id="@+id/donations__more_stub"
|
android:id="@+id/donations__more_donate_button"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout="@layout/fragment_ebeg_more" />
|
android:text="@string/settings_misc_donate_more"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Button
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:id="@+id/donations__more_donate_button"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/settings_misc_donate_more"
|
|
||||||
tools:viewBindingIgnore="true"/>
|
|
||||||
@@ -120,7 +120,7 @@
|
|||||||
<string name="settings_misc_source_summary">Leggi il manuale, metti tra i preferiti, segnala problemi e contribuisci</string>
|
<string name="settings_misc_source_summary">Leggi il manuale, metti tra i preferiti, segnala problemi e contribuisci</string>
|
||||||
<string name="settings_misc_donate">Dona</string>
|
<string name="settings_misc_donate">Dona</string>
|
||||||
<string name="settings_misc_donate_summary">Amo i soldi</string>
|
<string name="settings_misc_donate_summary">Amo i soldi</string>
|
||||||
<string name="settings_misc_donate_more">PayPal, Flattr, altro…</string>
|
<string name="settings_misc_donate_more">GitHub sponsors, PayPal, altro…</string>
|
||||||
<string name="settings_restart_required">Riavvia l\'applicazione per applicare questa impostazione.</string>
|
<string name="settings_restart_required">Riavvia l\'applicazione per applicare questa impostazione.</string>
|
||||||
<string name="settings_exit_app">Esci</string>
|
<string name="settings_exit_app">Esci</string>
|
||||||
|
|
||||||
|
|||||||
@@ -146,7 +146,7 @@
|
|||||||
<string name="settings_misc_source_summary">Leia o manual, marque com estrela, envie problemas e contribua (Tipo o Konny :D)</string>
|
<string name="settings_misc_source_summary">Leia o manual, marque com estrela, envie problemas e contribua (Tipo o Konny :D)</string>
|
||||||
<string name="settings_misc_donate">Doe</string>
|
<string name="settings_misc_donate">Doe</string>
|
||||||
<string name="settings_misc_donate_summary">Eu amo dinheiro!</string>
|
<string name="settings_misc_donate_summary">Eu amo dinheiro!</string>
|
||||||
<string name="settings_misc_donate_more">PayPal, Flattr, e mais…</string>
|
<string name="settings_misc_donate_more">GitHub sponsors, PayPal, e mais…</string>
|
||||||
<string name="settings_restart_required">Reinicie o aplicativo para aplicar essa função.</string>
|
<string name="settings_restart_required">Reinicie o aplicativo para aplicar essa função.</string>
|
||||||
<string name="settings_exit_app">Sair</string>
|
<string name="settings_exit_app">Sair</string>
|
||||||
|
|
||||||
|
|||||||
@@ -150,7 +150,7 @@
|
|||||||
<string name="settings_misc_source_summary">查看使用手册,star, 提交 issues, 合作</string>
|
<string name="settings_misc_source_summary">查看使用手册,star, 提交 issues, 合作</string>
|
||||||
<string name="settings_misc_donate">捐款</string>
|
<string name="settings_misc_donate">捐款</string>
|
||||||
<string name="settings_misc_donate_summary">请给我钱</string>
|
<string name="settings_misc_donate_summary">请给我钱</string>
|
||||||
<string name="settings_misc_donate_more">PayPal, Flattr 等其他方式…</string>
|
<string name="settings_misc_donate_more">GitHub sponsors, PayPal 等其他方式…</string>
|
||||||
<string name="settings_restart_required">重启应用以应用新的设置。</string>
|
<string name="settings_restart_required">重启应用以应用新的设置。</string>
|
||||||
<string name="settings_exit_app">退出</string>
|
<string name="settings_exit_app">退出</string>
|
||||||
|
|
||||||
|
|||||||
@@ -172,7 +172,7 @@
|
|||||||
<string name="settings_misc_source_summary">Read manual, star, submit issues and contribute</string>
|
<string name="settings_misc_source_summary">Read manual, star, submit issues and contribute</string>
|
||||||
<string name="settings_misc_donate">Donate</string>
|
<string name="settings_misc_donate">Donate</string>
|
||||||
<string name="settings_misc_donate_summary">I love money</string>
|
<string name="settings_misc_donate_summary">I love money</string>
|
||||||
<string name="settings_misc_donate_more">PayPal, Flattr, more…</string>
|
<string name="settings_misc_donate_more">GitHub sponsors, PayPal, more…</string>
|
||||||
<string name="settings_restart_required">Restart this app to apply this setting.</string>
|
<string name="settings_restart_required">Restart this app to apply this setting.</string>
|
||||||
<string name="settings_exit_app">Exit</string>
|
<string name="settings_exit_app">Exit</string>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user