123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487 |
- package com.vpn.fastestvpnservice.helpers
- import android.app.Activity
- import android.content.Context
- import android.graphics.drawable.AdaptiveIconDrawable
- import android.graphics.drawable.Drawable
- import android.util.Log
- import com.google.gson.Gson
- import com.google.gson.GsonBuilder
- import com.google.gson.reflect.TypeToken
- import com.vpn.fastestvpnservice.R
- import com.vpn.fastestvpnservice.beans.*
- import com.vpn.fastestvpnservice.constants.AppEnum
- import com.vpn.fastestvpnservice.constants.splitList
- class BasePreferenceHelper(private val context: Context) : PreferencesHelper() {
- fun clearAllData() {
- removePreference(context, KEY_FILENAME, KEY_USER)
- removePreference(context, KEY_FILENAME, KEY_USER_PASSWORD)
- removePreference(context, KEY_FILENAME, KEY_SERVERS_DATA)
- // removePreference(context, KEY_FILENAME, KEY_SERVERS)
- removePreference(context, KEY_FILENAME, KEY_SELECTED_APPS)
- removePreference(context, KEY_FILENAME, KEY_SELECTED_APPS_NO_VPN)
- removePreference(context, KEY_FILENAME, KEY_SELECTED_APPS_NOT_ALLOW)
- removePreference(context, KEY_FILENAME, KEY_SPLIT_TUNNEL)
- removePreference(context, KEY_FILENAME, KEY_SPLIT_TUNNEL_TV)
- removePreference(context, KEY_FILENAME, PROTOCOL)
- removePreference(context, KEY_FILENAME, X_PLATFORM_TOKEN)
- removePreference(context, KEY_FILENAME, KEY_PRODUCT)
- removePreference(context, KEY_FILENAME, KEY_AVAILABLE_PROTOCOLS)
- removePreference(context, KEY_FILENAME, KEY_ENABLED_PROTOCOLS)
- removePreference(context, KEY_FILENAME, KEY_WIREGUARD)
- removePreference(context, KEY_FILENAME, KEY_FEATURES_DATA)
- removePreference(context, KEY_FILENAME, KEY_SPLIT_ENABLE_TV)
- removePreference(context, KEY_FILENAME, KEY_SPLIT_DISABLE_TV)
- removePreference(context, KEY_FILENAME, KEY_SPLIT_TUNNEL_ENTRY)
- removePreference(context, KEY_FILENAME, TV_SPLIT_CLASS)
- removePreference(context, KEY_FILENAME, KEY_ADBLOCK_SWITCH)
- removePreference(context, KEY_FILENAME, KEY_ISLOGGEDIN)
- removePreference(context, KEY_FILENAME, THEME)
- removePreference(context, KEY_FILENAME, KEY_ISCONNECT)
- removePreference(context, KEY_FILENAME, KEY_SPLIT_POS)
- }
- fun saveUser(user: UserResponse) {
- putStringPreference(context, KEY_FILENAME, KEY_USER, Gson().toJson(user))
- }
- fun getUser(): UserResponse? {
- return Gson().fromJson<UserResponse>(
- getStringPreference(context, KEY_FILENAME, KEY_USER), UserResponse::class.java
- )
- }
- fun saveProduct(product: Product) {
- putStringPreference(context, KEY_FILENAME, KEY_PRODUCT, Gson().toJson(product))
- }
- fun getProduct(): Product? {
- return Gson().fromJson<Product>(
- getStringPreference(context, KEY_FILENAME, KEY_PRODUCT), Product::class.java
- )
- }
- fun saveWireGuard(wireGuard: WireGuard) {
- putStringPreference(context, KEY_FILENAME, KEY_WIREGUARD, Gson().toJson(wireGuard))
- }
- fun getWireGuard(): WireGuard? {
- return Gson().fromJson<WireGuard>(
- getStringPreference(context, KEY_FILENAME, KEY_WIREGUARD), WireGuard::class.java
- )
- }
- fun saveIpInfo(ipInfo: IpInfo) {
- putStringPreference(context, KEY_FILENAME, KEY_IPINFO, Gson().toJson(ipInfo))
- }
- fun getIpinfo(): IpInfo? {
- return Gson().fromJson<IpInfo>(
- getStringPreference(context, KEY_FILENAME, KEY_IPINFO), IpInfo::class.java
- )
- }
- fun savePassword(pass: String) {
- putStringPreference(context, KEY_FILENAME, KEY_USER_PASSWORD, pass)
- }
- fun getPassword(): String {
- return getStringPreference(context, KEY_FILENAME, KEY_USER_PASSWORD)
- }
- fun saveServerData(list: ArrayList<ServerData>) {
- putStringPreference(context, KEY_FILENAME, KEY_SERVERS_DATA, Gson().toJson(list))
- }
- fun getServerData(): ArrayList<ServerData> {
- val type = object : TypeToken<ArrayList<ServerData?>?>() {}.type
- return Gson().fromJson<ArrayList<ServerData>>(
- getStringPreference(
- context, KEY_FILENAME, KEY_SERVERS_DATA
- ), type
- )
- }
- fun saveFeaturesData(list: ArrayList<ProductFeatures>) {
- putStringPreference(context, KEY_FILENAME, KEY_FEATURES_DATA, Gson().toJson(list))
- }
- fun getFeaturesData(): List<ProductFeatures> {
- val type = object : TypeToken<List<ProductFeatures?>?>() {}.type
- return Gson().fromJson<List<ProductFeatures>>(
- getStringPreference(
- context, KEY_FILENAME, KEY_FEATURES_DATA
- ), type
- )
- }
- fun saveEnabledProtocols(list: ArrayList<String>) {
- putStringPreference(context, KEY_FILENAME, KEY_ENABLED_PROTOCOLS, Gson().toJson(list))
- }
- fun getEnabledProtocols(): ArrayList<String> {
- val type = object : TypeToken<ArrayList<String?>?>() {}.type
- try {
- return Gson().fromJson<ArrayList<String>>(
- getStringPreference(
- context, KEY_FILENAME, KEY_ENABLED_PROTOCOLS
- ), type
- )
- }
- catch (e: Exception) {
- val tempList = ArrayList<String>()
- tempList.add("WG")
- tempList.add("IKEV2")
- tempList.add("TCP")
- tempList.add("UDP")
- return tempList
- }
- }
- fun saveAvailableProtocols(list: ArrayList<String>) {
- var tempList = ArrayList<String>()
- if (list.contains(AppEnum.WG_PROTOCOL.key)) {
- tempList.add(AppEnum.WG_PROTOCOL.key)
- }
- if (list.contains(AppEnum.IKEV2_PROTOCOL.key)) {
- tempList.add(AppEnum.IKEV2_PROTOCOL.key)
- }
- if (list.contains(AppEnum.TCP_PROTOCOL.key)) {
- tempList.add(AppEnum.TCP_PROTOCOL.key)
- }
- if (list.contains(AppEnum.UDP_PROTOCOL.key)) {
- tempList.add(AppEnum.UDP_PROTOCOL.key)
- }
- putStringPreference(context, KEY_FILENAME, KEY_AVAILABLE_PROTOCOLS, Gson().toJson(tempList))
- }
- fun getAvailableProtocols(): ArrayList<String> {
- val type = object : TypeToken<ArrayList<String?>?>() {}.type
- return try {
- Gson().fromJson<ArrayList<String>>(
- getStringPreference(
- context, KEY_FILENAME, KEY_AVAILABLE_PROTOCOLS
- ), type
- )
- } catch (e: Exception) {
- val tempList = ArrayList<String>()
- tempList.add("WG")
- tempList.add("IKEV2")
- tempList.add("TCP")
- tempList.add("UDP")
- return tempList
- }
- }
- fun getEnableTvAppsSplit(): ArrayList<TvEnableApps>? {
- val type = object : TypeToken<ArrayList<TvEnableApps?>?>() {}.type
- return Gson().fromJson<ArrayList<TvEnableApps>>(
- getStringPreference(
- context, KEY_FILENAME, KEY_SPLIT_ENABLE_TV
- ), type
- )
- }
- fun setEnableTvAppsSplit(allSplitTunnelEnabled: ArrayList<TvEnableApps>?) {
- if (allSplitTunnelEnabled == null) {
- removePreference(context, KEY_FILENAME, KEY_SPLIT_ENABLE_TV)
- return
- }
- putStringPreference(context, KEY_FILENAME, KEY_SPLIT_ENABLE_TV, Gson().toJson(allSplitTunnelEnabled))
- }
- fun getDisableTvAppsSplit(): ArrayList<TvDisableApps>? {
- val type = object : TypeToken<ArrayList<TvDisableApps?>?>() {}.type
- return Gson().fromJson<ArrayList<TvDisableApps>>(
- getStringPreference(
- context, KEY_FILENAME, KEY_SPLIT_DISABLE_TV
- ), type
- )
- }
- fun setDisableTvAppsSplit(allSplitTunnelEnabled: ArrayList<TvDisableApps>?) {
- if (allSplitTunnelEnabled == null) {
- removePreference(context, KEY_FILENAME, KEY_SPLIT_DISABLE_TV)
- return
- }
- putStringPreference(context, KEY_FILENAME, KEY_SPLIT_DISABLE_TV, Gson().toJson(allSplitTunnelEnabled))
- }
- fun getSplitTunnelTvAppsName(): ArrayList<String>? {
- val type = object : TypeToken<ArrayList<String?>?>() {}.type
- return Gson().fromJson<ArrayList<String>>(
- getStringPreference(
- context, KEY_FILENAME, KEY_SPLIT_TUNNEL
- ), type
- )
- }
- fun setSplitTunnelTvAppsName(allSplitTunnelEnabled: ArrayList<String>?) {
- if (allSplitTunnelEnabled == null) {
- removePreference(context, KEY_FILENAME, KEY_SPLIT_TUNNEL)
- return
- }
- putStringPreference(context, KEY_FILENAME, KEY_SPLIT_TUNNEL, Gson().toJson(allSplitTunnelEnabled))
- }
- fun getSplitTunnelTvAppsPackageName(): ArrayList<String>? {
- val type = object : TypeToken<ArrayList<String?>?>() {}.type
- return Gson().fromJson<ArrayList<String>>(
- getStringPreference(
- context, KEY_FILENAME, KEY_SPLIT_TUNNEL_TV
- ), type
- )
- }
- fun setSplitTunnelTvAppsPackageName(allSplitTunnelEnabled: ArrayList<String>?) {
- if (allSplitTunnelEnabled == null) {
- removePreference(context, KEY_FILENAME, KEY_SPLIT_TUNNEL_TV)
- return
- }
- putStringPreference(context, KEY_FILENAME, KEY_SPLIT_TUNNEL_TV, Gson().toJson(allSplitTunnelEnabled))
- }
- fun getSplitTunnelTvAppsEntry(): ArrayList<String>? {
- val type = object : TypeToken<ArrayList<String?>?>() {}.type
- return Gson().fromJson<ArrayList<String>>(
- getStringPreference(
- context, KEY_FILENAME, KEY_SPLIT_TUNNEL_ENTRY
- ), type
- )
- }
- fun setSplitTunnelTvAppsEntry(appsEntry: ArrayList<String>?) {
- if (appsEntry == null) {
- removePreference(context, KEY_FILENAME, KEY_SPLIT_TUNNEL_ENTRY)
- return
- }
- putStringPreference(context, KEY_FILENAME, KEY_SPLIT_TUNNEL_ENTRY, Gson().toJson(appsEntry))
- }
- fun setInstanceActivity(activity: Activity){
- putStringPreference(context, KEY_FILENAME, KEY_ACTIVITY, Gson().toJson(activity))
- }
- fun getInstanceActivity(): Activity? {
- var activity: Activity? = null
- val mainActivity = getStringPreference(context, KEY_FILENAME, KEY_ACTIVITY)
- if (mainActivity != null){
- val gson = GsonBuilder().create()
- activity = gson.fromJson(mainActivity, Activity::class.java)
- }
- return activity
- }
- fun getServerObject(): Server? {
- var serverObj: Server? = null
- val serverObjStr: String = getStringPreference(context, KEY_FILENAME, KEY_SERVERS)
- if (serverObjStr != null) {
- val gson = GsonBuilder().create()
- serverObj = gson.fromJson(serverObjStr, Server::class.java)
- }
- return serverObj
- }
- fun setServerObject(serverObj: Server?) {
- putStringPreference(context, KEY_FILENAME, KEY_SERVERS, Gson().toJson(serverObj))
- }
- fun getSplitTunneledApps(): String? {
- return getStringPreference(context, KEY_FILENAME, KEY_SELECTED_APPS)
- }
- fun setSplitTunneledApps(selectedApps: String?) {
- if (selectedApps == null) {
- removePreference(context, KEY_FILENAME, KEY_SELECTED_APPS)
- return
- }
- putStringPreference(context, KEY_FILENAME, KEY_SELECTED_APPS, selectedApps)
- }
- fun getSplitTunneledAppsNoVpn(): String? {
- return getStringPreference(context, KEY_FILENAME, KEY_SELECTED_APPS_NO_VPN)
- }
- fun setSplitTunneledAppsNoVpn(selectedApps: String?) {
- if (selectedApps == null) {
- removePreference(context, KEY_FILENAME, KEY_SELECTED_APPS_NO_VPN)
- return
- }
- putStringPreference(context, KEY_FILENAME, KEY_SELECTED_APPS_NO_VPN, selectedApps)
- }
- fun getSplitTunneledAppsNotAllow(): String? {
- return getStringPreference(context, KEY_FILENAME, KEY_SELECTED_APPS_NOT_ALLOW)
- }
- fun setSplitTunneledAppsNotAllow(selectedApps: String?) {
- if (selectedApps == null) {
- removePreference(context, KEY_FILENAME, KEY_SELECTED_APPS_NOT_ALLOW)
- return
- }
- putStringPreference(context, KEY_FILENAME, KEY_SELECTED_APPS_NOT_ALLOW, selectedApps)
- }
- fun saveAppDetails(appDetails: String) {
- putStringPreference(context, KEY_FILENAME, APP_DETAILS, appDetails)
- }
- fun getAppDetails(): String {
- return getStringPreference(context, KEY_FILENAME, APP_DETAILS)
- }
- fun saveFileDetails(fileDetails: String) {
- putStringPreference(context, KEY_FILENAME, FILE_DETAILS, fileDetails)
- }
- fun getFileDetails(): String {
- return getStringPreference(context, KEY_FILENAME, FILE_DETAILS)
- }
- fun saveTheme(theme: String) {
- putStringPreference(context, KEY_FILENAME, THEME, theme)
- }
- fun getTheme(): String {
- return getStringPreference(context, KEY_FILENAME, THEME)
- }
- fun saveTvSplitTunnel(tvSplitTunneling: ArrayList<TvSplitTunneling>) {
- putStringPreference(context, KEY_FILENAME, TV_SPLIT_CLASS, Gson().toJson(tvSplitTunneling))
- }
- fun getTvSplitTunnel(): ArrayList<TvSplitTunneling> {
- val tvSplitTunneling = Gson().fromJson<ArrayList<TvSplitTunneling>>(
- getStringPreference(context, KEY_FILENAME, TV_SPLIT_CLASS), TvSplitTunneling::class.java
- )
- return tvSplitTunneling
- }
- fun saveProtocol(protocol: Protocol) {
- putStringPreference(context, KEY_FILENAME, PROTOCOL, Gson().toJson(protocol))
- }
- fun getProtocol(): Protocol {
- var protocol = Gson().fromJson<Protocol>(
- getStringPreference(context, KEY_FILENAME, PROTOCOL), Protocol::class.java
- )
- protocol?.let {
- return protocol
- } ?: kotlin.run {
- return Protocol(
- AppEnum.WG_PROTOCOL.title, AppEnum.WG_PROTOCOL.key, 1
- // AppEnum.AUTO_PROTOCOL.title, AppEnum.IKEV2_PROTOCOL.key, 0
- ) //By default (AUTO) Protocol is selected (index 0 = AUTO). Checking IKEV2 first then check TCP/UDP
- }
- }
- // fun saveRadioBtnSplitPos(position: Int) {
- // putIntegerPreference(context, KEY_FILENAME, KEY_SPLIT_POS, position)
- // }
- //
- // fun getRadioBtnSplitPos(): Int {
- // return getIntegerPreference(context, KEY_FILENAME, KEY_SPLIT_POS)
- // }
- fun saveAdBlockState(status: Boolean) {
- putBooleanPreference(context, KEY_FILENAME, KEY_ADBLOCK_SWITCH, status)
- }
- fun getAdBlockState(): Boolean {
- return getBooleanPreference(context, KEY_FILENAME, KEY_ADBLOCK_SWITCH)
- }
- fun saveFcmToken(token: String) {
- putStringPreference(context, KEY_FILENAME, KEY_FCM, token)
- }
- fun getLoggedInState(): Boolean {
- return getBooleanPreference(context, KEY_FILENAME, KEY_ISLOGGEDIN)
- }
- fun setLoggedInState(state: Boolean) {
- putBooleanPreference(context, KEY_FILENAME, KEY_ISLOGGEDIN, state)
- }
- fun getConnectState(): Boolean {
- return getBooleanPreference(context, KEY_FILENAME, KEY_ISCONNECT)
- }
- fun setConnectState(state: Boolean) {
- putBooleanPreference(context, KEY_FILENAME, KEY_ISCONNECT, state)
- }
- fun getFcmToken(): String {
- return getStringPreference(context, KEY_FILENAME, KEY_FCM)
- }
- fun saveXPlatformToken(token: String) {
- putStringPreference(context, KEY_FILENAME, X_PLATFORM_TOKEN, token)
- }
- fun getXPlatformToken(): String {
- return getStringPreference(context, KEY_FILENAME, X_PLATFORM_TOKEN)
- }
- fun saveSplitPosition(token: String) {
- putStringPreference(context, KEY_FILENAME, KEY_SPLIT_POS, token)
- }
- fun getSplitPosition(): String {
- try {
- return getStringPreference(context, KEY_FILENAME, KEY_SPLIT_POS)
- } catch (ex: Exception) {
- return splitList[0]
- }
- }
- companion object {
- private const val KEY_FILENAME = "file_fastestvpn"
- private const val KEY_USER = "keydata_user"
- private const val KEY_PRODUCT = "keydata_product"
- private const val KEY_WIREGUARD = "keydata_wireguard"
- private const val KEY_IPINFO = "keydata_ipinfo"
- private const val KEY_USER_PASSWORD = "keydata_user_password"
- private const val KEY_SERVERS_DATA = "keydata_servers_data"
- private const val KEY_FEATURES_DATA = "keydata_features_data"
- private const val KEY_ENABLED_PROTOCOLS = "keydata_enabled_protocols"
- private const val KEY_AVAILABLE_PROTOCOLS = "keydata_available_protocols"
- private const val KEY_SERVERS = "keydata_server"
- private const val KEY_SELECTED_APPS = "keydata_selectedApps"
- private const val KEY_SELECTED_APPS_NO_VPN = "keydata_selectedAppsNoVpn"
- private const val KEY_SELECTED_APPS_NOT_ALLOW = "keydata_selectedAppsNotAllow"
- private const val KEY_SPLIT_TUNNEL = "keydata_tv_apps_name"
- private const val KEY_SPLIT_TUNNEL_TV = "keydata_tv_apps_package_name"
- private const val KEY_SPLIT_ENABLE_TV = "keydata_tv_apps_enable"
- private const val KEY_SPLIT_DISABLE_TV = "keydata_tv_apps_disable"
- private const val KEY_SPLIT_TUNNEL_ENTRY = "keydata_tv_apps_entry"
- private const val APP_DETAILS = "keydata_app_detail"
- private const val FILE_DETAILS = "keydata_file_details"
- private const val PROTOCOL = "keydata_protocol"
- private const val TV_SPLIT_CLASS = "keydata_tvsplitclass"
- private const val X_PLATFORM_TOKEN = "keydata_x_platform_token"
- private const val KEY_FCM = "keydata_fcm"
- private const val KEY_SPLIT_POS = "keydata_split_pos"
- private const val KEY_ACTIVITY = "keydata_activity"
- private const val KEY_ADBLOCK_SWITCH = "keydata_adblock"
- private const val KEY_ISLOGGEDIN = "key_isloggedin"
- private const val THEME = "key_theme"
- private const val KEY_ISCONNECT = "keydata_isconnect"
- }
- }
|