BasePreferenceHelper.kt 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621
  1. package com.vpn.fastestvpnservice.helpers
  2. import android.app.Activity
  3. import android.content.Context
  4. import android.graphics.drawable.AdaptiveIconDrawable
  5. import android.graphics.drawable.Drawable
  6. import android.util.Log
  7. import com.google.gson.Gson
  8. import com.google.gson.GsonBuilder
  9. import com.google.gson.reflect.TypeToken
  10. import com.vpn.fastestvpnservice.R
  11. import com.vpn.fastestvpnservice.beans.*
  12. import com.vpn.fastestvpnservice.constants.AppEnum
  13. import com.vpn.fastestvpnservice.constants.splitList
  14. class BasePreferenceHelper(private val context: Context) : PreferencesHelper() {
  15. fun clearAllData() {
  16. removePreference(context, KEY_FILENAME, KEY_USER)
  17. removePreference(context, KEY_FILENAME, KEY_USER_PASSWORD)
  18. removePreference(context, KEY_FILENAME, KEY_SERVERS_DATA)
  19. removePreference(context, KEY_FILENAME, KEY_SERVERS)
  20. removePreference(context, KEY_FILENAME, KEY_SELECTED_APPS)
  21. removePreference(context, KEY_FILENAME, KEY_SELECTED_APPS_NO_VPN)
  22. removePreference(context, KEY_FILENAME, KEY_SELECTED_APPS_NOT_ALLOW)
  23. removePreference(context, KEY_FILENAME, KEY_SPLIT_TUNNEL)
  24. removePreference(context, KEY_FILENAME, KEY_SPLIT_TUNNEL_TV)
  25. removePreference(context, KEY_FILENAME, PROTOCOL)
  26. removePreference(context, KEY_FILENAME, X_PLATFORM_TOKEN)
  27. removePreference(context, KEY_FILENAME, KEY_PRODUCT)
  28. removePreference(context, KEY_FILENAME, KEY_AVAILABLE_PROTOCOLS)
  29. removePreference(context, KEY_FILENAME, KEY_ENABLED_PROTOCOLS)
  30. removePreference(context, KEY_FILENAME, KEY_WIREGUARD)
  31. removePreference(context, KEY_FILENAME, KEY_FEATURES_DATA)
  32. removePreference(context, KEY_FILENAME, KEY_SPLIT_ENABLE_TV)
  33. removePreference(context, KEY_FILENAME, KEY_SPLIT_DISABLE_TV)
  34. removePreference(context, KEY_FILENAME, KEY_SPLIT_TUNNEL_ENTRY)
  35. removePreference(context, KEY_FILENAME, TV_SPLIT_CLASS)
  36. removePreference(context, KEY_FILENAME, KEY_ADBLOCK_SWITCH)
  37. removePreference(context, KEY_FILENAME, KEY_ISLOGGEDIN)
  38. // removePreference(context, KEY_FILENAME, THEME)
  39. removePreference(context, KEY_FILENAME, KEY_ISCONNECT)
  40. removePreference(context, KEY_FILENAME, KEY_SPLIT_POS)
  41. removePreference(context, KEY_FILENAME, FILTER)
  42. removePreference(context, KEY_FILENAME, SMART)
  43. removePreference(context, KEY_FILENAME, KEY_SMART_SERVER)
  44. removePreference(context, KEY_FILENAME, KEY_AUTO_OPENVPN)
  45. removePreference(context, KEY_FILENAME, KEY_RECOMMENDED)
  46. removePreference(context, KEY_FILENAME, KEY_SUBSCRIPTION)
  47. removePreference(context, KEY_FILENAME, KEY_CONNECTED_SERVER)
  48. removePreference(context, KEY_FILENAME, KEY_RECENTLY_SERVERS)
  49. }
  50. fun clearServerObject() {
  51. removePreference(context, KEY_FILENAME, KEY_SERVERS)
  52. }
  53. fun saveUser(user: UserResponse) {
  54. putStringPreference(context, KEY_FILENAME, KEY_USER, Gson().toJson(user))
  55. }
  56. fun getUser(): UserResponse? {
  57. return Gson().fromJson<UserResponse>(
  58. getStringPreference(context, KEY_FILENAME, KEY_USER), UserResponse::class.java
  59. )
  60. }
  61. fun saveProduct(product: Product) {
  62. putStringPreference(context, KEY_FILENAME, KEY_PRODUCT, Gson().toJson(product))
  63. }
  64. fun getProduct(): Product? {
  65. return Gson().fromJson<Product>(
  66. getStringPreference(context, KEY_FILENAME, KEY_PRODUCT), Product::class.java
  67. )
  68. }
  69. fun saveWireGuard(wireGuard: WireGuard) {
  70. putStringPreference(context, KEY_FILENAME, KEY_WIREGUARD, Gson().toJson(wireGuard))
  71. }
  72. fun getWireGuard(): WireGuard? {
  73. return Gson().fromJson<WireGuard>(
  74. getStringPreference(context, KEY_FILENAME, KEY_WIREGUARD), WireGuard::class.java
  75. )
  76. }
  77. fun saveIpInfo(ipInfo: IpInfo) {
  78. putStringPreference(context, KEY_FILENAME, KEY_IPINFO, Gson().toJson(ipInfo))
  79. }
  80. fun getIpinfo(): IpInfo? {
  81. return Gson().fromJson<IpInfo>(
  82. getStringPreference(context, KEY_FILENAME, KEY_IPINFO), IpInfo::class.java
  83. )
  84. }
  85. fun savePassword(pass: String) {
  86. putStringPreference(context, KEY_FILENAME, KEY_USER_PASSWORD, pass)
  87. }
  88. fun getPassword(): String {
  89. return getStringPreference(context, KEY_FILENAME, KEY_USER_PASSWORD)
  90. }
  91. fun saveServerData(list: ArrayList<ServerData>) {
  92. putStringPreference(context, KEY_FILENAME, KEY_SERVERS_DATA, Gson().toJson(list))
  93. }
  94. fun getServerData(): ArrayList<ServerData> {
  95. val type = object : TypeToken<ArrayList<ServerData?>?>() {}.type
  96. return Gson().fromJson<ArrayList<ServerData>>(
  97. getStringPreference(
  98. context, KEY_FILENAME, KEY_SERVERS_DATA
  99. ), type
  100. )
  101. }
  102. fun getRecentlyList(): ArrayList<Server>? {
  103. val type = object : TypeToken<ArrayList<Server?>?>() {}.type
  104. return Gson().fromJson<ArrayList<Server>>(
  105. getStringPreference(
  106. context, KEY_FILENAME, KEY_RECENTLY_SERVERS
  107. ), type
  108. )
  109. }
  110. fun setRecentlyList(list: ArrayList<Server>?) {
  111. putStringPreference(context, KEY_FILENAME, KEY_RECENTLY_SERVERS, Gson().toJson(list))
  112. }
  113. fun saveFeaturesData(list: ArrayList<ProductFeatures>) {
  114. putStringPreference(context, KEY_FILENAME, KEY_FEATURES_DATA, Gson().toJson(list))
  115. }
  116. fun getFeaturesData(): List<ProductFeatures> {
  117. val type = object : TypeToken<List<ProductFeatures?>?>() {}.type
  118. return Gson().fromJson<List<ProductFeatures>>(
  119. getStringPreference(
  120. context, KEY_FILENAME, KEY_FEATURES_DATA
  121. ), type
  122. )
  123. }
  124. fun saveEnabledProtocols(list: ArrayList<String>) {
  125. putStringPreference(context, KEY_FILENAME, KEY_ENABLED_PROTOCOLS, Gson().toJson(list))
  126. }
  127. fun getEnabledProtocols(): ArrayList<String> {
  128. val type = object : TypeToken<ArrayList<String?>?>() {}.type
  129. try {
  130. return Gson().fromJson<ArrayList<String>>(
  131. getStringPreference(
  132. context, KEY_FILENAME, KEY_ENABLED_PROTOCOLS
  133. ), type
  134. )
  135. }
  136. catch (e: Exception) {
  137. val tempList = ArrayList<String>()
  138. tempList.add("WG")
  139. tempList.add("IKEV2")
  140. tempList.add("TCP")
  141. tempList.add("UDP")
  142. return tempList
  143. }
  144. }
  145. fun saveAvailableProtocols(list: ArrayList<String>) {
  146. var tempList = ArrayList<String>()
  147. if (list.contains(AppEnum.WG_PROTOCOL.key)) {
  148. tempList.add(AppEnum.WG_PROTOCOL.key)
  149. }
  150. if (list.contains(AppEnum.IKEV2_PROTOCOL.key)) {
  151. tempList.add(AppEnum.IKEV2_PROTOCOL.key)
  152. }
  153. if (list.contains(AppEnum.TCP_PROTOCOL.key)) {
  154. tempList.add(AppEnum.TCP_PROTOCOL.key)
  155. }
  156. if (list.contains(AppEnum.UDP_PROTOCOL.key)) {
  157. tempList.add(AppEnum.UDP_PROTOCOL.key)
  158. }
  159. putStringPreference(context, KEY_FILENAME, KEY_AVAILABLE_PROTOCOLS, Gson().toJson(tempList))
  160. }
  161. fun getAvailableProtocols(): ArrayList<String> {
  162. val type = object : TypeToken<ArrayList<String?>?>() {}.type
  163. return try {
  164. Gson().fromJson<ArrayList<String>>(
  165. getStringPreference(
  166. context, KEY_FILENAME, KEY_AVAILABLE_PROTOCOLS
  167. ), type
  168. )
  169. } catch (e: Exception) {
  170. val tempList = ArrayList<String>()
  171. tempList.add("WG")
  172. tempList.add("IKEV2")
  173. tempList.add("TCP")
  174. tempList.add("UDP")
  175. return tempList
  176. }
  177. }
  178. fun getEnableTvAppsSplit(): ArrayList<TvEnableApps>? {
  179. val type = object : TypeToken<ArrayList<TvEnableApps?>?>() {}.type
  180. return Gson().fromJson<ArrayList<TvEnableApps>>(
  181. getStringPreference(
  182. context, KEY_FILENAME, KEY_SPLIT_ENABLE_TV
  183. ), type
  184. )
  185. }
  186. fun setEnableTvAppsSplit(allSplitTunnelEnabled: ArrayList<TvEnableApps>?) {
  187. if (allSplitTunnelEnabled == null) {
  188. removePreference(context, KEY_FILENAME, KEY_SPLIT_ENABLE_TV)
  189. return
  190. }
  191. putStringPreference(context, KEY_FILENAME, KEY_SPLIT_ENABLE_TV, Gson().toJson(allSplitTunnelEnabled))
  192. }
  193. fun getDisableTvAppsSplit(): ArrayList<TvDisableApps>? {
  194. val type = object : TypeToken<ArrayList<TvDisableApps?>?>() {}.type
  195. return Gson().fromJson<ArrayList<TvDisableApps>>(
  196. getStringPreference(
  197. context, KEY_FILENAME, KEY_SPLIT_DISABLE_TV
  198. ), type
  199. )
  200. }
  201. fun setDisableTvAppsSplit(allSplitTunnelEnabled: ArrayList<TvDisableApps>?) {
  202. if (allSplitTunnelEnabled == null) {
  203. removePreference(context, KEY_FILENAME, KEY_SPLIT_DISABLE_TV)
  204. return
  205. }
  206. putStringPreference(context, KEY_FILENAME, KEY_SPLIT_DISABLE_TV, Gson().toJson(allSplitTunnelEnabled))
  207. }
  208. fun getSplitTunnelTvAppsName(): ArrayList<String>? {
  209. val type = object : TypeToken<ArrayList<String?>?>() {}.type
  210. return Gson().fromJson<ArrayList<String>>(
  211. getStringPreference(
  212. context, KEY_FILENAME, KEY_SPLIT_TUNNEL
  213. ), type
  214. )
  215. }
  216. fun setSplitTunnelTvAppsName(allSplitTunnelEnabled: ArrayList<String>?) {
  217. if (allSplitTunnelEnabled == null) {
  218. removePreference(context, KEY_FILENAME, KEY_SPLIT_TUNNEL)
  219. return
  220. }
  221. putStringPreference(context, KEY_FILENAME, KEY_SPLIT_TUNNEL, Gson().toJson(allSplitTunnelEnabled))
  222. }
  223. fun getSplitTunnelTvAppsPackageName(): ArrayList<String>? {
  224. val type = object : TypeToken<ArrayList<String?>?>() {}.type
  225. return Gson().fromJson<ArrayList<String>>(
  226. getStringPreference(
  227. context, KEY_FILENAME, KEY_SPLIT_TUNNEL_TV
  228. ), type
  229. )
  230. }
  231. fun setSplitTunnelTvAppsPackageName(allSplitTunnelEnabled: ArrayList<String>?) {
  232. if (allSplitTunnelEnabled == null) {
  233. removePreference(context, KEY_FILENAME, KEY_SPLIT_TUNNEL_TV)
  234. return
  235. }
  236. putStringPreference(context, KEY_FILENAME, KEY_SPLIT_TUNNEL_TV, Gson().toJson(allSplitTunnelEnabled))
  237. }
  238. fun getSplitTunnelTvAppsEntry(): ArrayList<String>? {
  239. val type = object : TypeToken<ArrayList<String?>?>() {}.type
  240. return Gson().fromJson<ArrayList<String>>(
  241. getStringPreference(
  242. context, KEY_FILENAME, KEY_SPLIT_TUNNEL_ENTRY
  243. ), type
  244. )
  245. }
  246. fun setSplitTunnelTvAppsEntry(appsEntry: ArrayList<String>?) {
  247. if (appsEntry == null) {
  248. removePreference(context, KEY_FILENAME, KEY_SPLIT_TUNNEL_ENTRY)
  249. return
  250. }
  251. putStringPreference(context, KEY_FILENAME, KEY_SPLIT_TUNNEL_ENTRY, Gson().toJson(appsEntry))
  252. }
  253. fun setInstanceActivity(activity: Activity){
  254. putStringPreference(context, KEY_FILENAME, KEY_ACTIVITY, Gson().toJson(activity))
  255. }
  256. fun getInstanceActivity(): Activity? {
  257. var activity: Activity? = null
  258. val mainActivity = getStringPreference(context, KEY_FILENAME, KEY_ACTIVITY)
  259. if (mainActivity != null){
  260. val gson = GsonBuilder().create()
  261. activity = gson.fromJson(mainActivity, Activity::class.java)
  262. }
  263. return activity
  264. }
  265. fun getServerObject(): Server? {
  266. var serverObj: Server? = null
  267. val serverObjStr: String = getStringPreference(context, KEY_FILENAME, KEY_SERVERS)
  268. if (serverObjStr != null) {
  269. val gson = GsonBuilder().create()
  270. serverObj = gson.fromJson(serverObjStr, Server::class.java)
  271. }
  272. return serverObj
  273. }
  274. fun setServerObject(serverObj: Server?) {
  275. putStringPreference(context, KEY_FILENAME, KEY_SERVERS, Gson().toJson(serverObj))
  276. }
  277. fun getConnectedServer(): Server? {
  278. var serverObj: Server? = null
  279. val serverObjStr: String = getStringPreference(context, KEY_FILENAME, KEY_CONNECTED_SERVER)
  280. if (serverObjStr != null) {
  281. val gson = GsonBuilder().create()
  282. serverObj = gson.fromJson(serverObjStr, Server::class.java)
  283. }
  284. return serverObj
  285. }
  286. fun setConnectedServer(serverObj: Server?) {
  287. putStringPreference(context, KEY_FILENAME, KEY_CONNECTED_SERVER, Gson().toJson(serverObj))
  288. }
  289. fun getSmartServerObject(): Server? {
  290. var serverObj: Server? = null
  291. val serverObjStr: String = getStringPreference(context, KEY_FILENAME, KEY_SMART_SERVER)
  292. if (serverObjStr != null) {
  293. val gson = GsonBuilder().create()
  294. serverObj = gson.fromJson(serverObjStr, Server::class.java)
  295. }
  296. return serverObj
  297. }
  298. fun setSmartServerObject(smartObj: Server?) {
  299. putStringPreference(context, KEY_FILENAME, KEY_SMART_SERVER, Gson().toJson(smartObj))
  300. }
  301. fun getRecommendedServerObject(): Server? {
  302. var serverObj: Server? = null
  303. val serverObjStr: String = getStringPreference(context, KEY_FILENAME, KEY_RECOMMENDED)
  304. if (serverObjStr != null) {
  305. val gson = GsonBuilder().create()
  306. serverObj = gson.fromJson(serverObjStr, Server::class.java)
  307. }
  308. return serverObj
  309. }
  310. fun setRecommendedServerObject(recommended: Server?) {
  311. putStringPreference(context, KEY_FILENAME, KEY_RECOMMENDED, Gson().toJson(recommended))
  312. }
  313. fun getRecommendedList(): ArrayList<Server>? {
  314. val type = object : TypeToken<ArrayList<Server?>?>() {}.type
  315. return Gson().fromJson<ArrayList<Server>>(
  316. getStringPreference(
  317. context, KEY_FILENAME, KEY_RECOMMENDED_LIST
  318. ), type
  319. )
  320. }
  321. fun setRecommendedList(recommended: ArrayList<Server>?) {
  322. putStringPreference(context, KEY_FILENAME, KEY_RECOMMENDED_LIST, Gson().toJson(recommended))
  323. }
  324. fun getSubscriptionServerObject(): Server? {
  325. var serverObj: Server? = null
  326. val serverObjStr: String = getStringPreference(context, KEY_FILENAME, KEY_SUBSCRIPTION)
  327. if (serverObjStr != null) {
  328. val gson = GsonBuilder().create()
  329. serverObj = gson.fromJson(serverObjStr, Server::class.java)
  330. }
  331. return serverObj
  332. }
  333. fun setSubscriptionServerObject(subscription: Server?) {
  334. putStringPreference(context, KEY_FILENAME, KEY_SUBSCRIPTION, Gson().toJson(subscription))
  335. }
  336. fun getSplitTunneledApps(): String? {
  337. return getStringPreference(context, KEY_FILENAME, KEY_SELECTED_APPS)
  338. }
  339. fun setSplitTunneledApps(selectedApps: String?) {
  340. if (selectedApps == null) {
  341. removePreference(context, KEY_FILENAME, KEY_SELECTED_APPS)
  342. return
  343. }
  344. putStringPreference(context, KEY_FILENAME, KEY_SELECTED_APPS, selectedApps)
  345. }
  346. fun getSplitTunneledAppsNoVpn(): String? {
  347. return getStringPreference(context, KEY_FILENAME, KEY_SELECTED_APPS_NO_VPN)
  348. }
  349. fun setSplitTunneledAppsNoVpn(selectedApps: String?) {
  350. if (selectedApps == null) {
  351. removePreference(context, KEY_FILENAME, KEY_SELECTED_APPS_NO_VPN)
  352. return
  353. }
  354. putStringPreference(context, KEY_FILENAME, KEY_SELECTED_APPS_NO_VPN, selectedApps)
  355. }
  356. fun getSplitTunneledAppsNotAllow(): String? {
  357. return getStringPreference(context, KEY_FILENAME, KEY_SELECTED_APPS_NOT_ALLOW)
  358. }
  359. fun setSplitTunneledAppsNotAllow(selectedApps: String?) {
  360. if (selectedApps == null) {
  361. removePreference(context, KEY_FILENAME, KEY_SELECTED_APPS_NOT_ALLOW)
  362. return
  363. }
  364. putStringPreference(context, KEY_FILENAME, KEY_SELECTED_APPS_NOT_ALLOW, selectedApps)
  365. }
  366. fun saveAppDetails(appDetails: String) {
  367. putStringPreference(context, KEY_FILENAME, APP_DETAILS, appDetails)
  368. }
  369. fun getAppDetails(): String {
  370. return getStringPreference(context, KEY_FILENAME, APP_DETAILS)
  371. }
  372. fun saveFileDetails(fileDetails: String) {
  373. putStringPreference(context, KEY_FILENAME, FILE_DETAILS, fileDetails)
  374. }
  375. fun getFileDetails(): String {
  376. return getStringPreference(context, KEY_FILENAME, FILE_DETAILS)
  377. }
  378. fun saveTheme(theme: String) {
  379. putStringPreference(context, KEY_FILENAME, THEME, theme)
  380. }
  381. fun getTheme(): String {
  382. return try {
  383. getStringPreference(context, KEY_FILENAME, THEME, themesList[0])
  384. } catch (ex: Exception) {
  385. themesList[0]
  386. }
  387. }
  388. fun saveFilterList(filter: String) {
  389. putStringPreference(context, KEY_FILENAME, FILTER, filter)
  390. }
  391. fun getFilterList(): String {
  392. return getStringPreference(context, KEY_FILENAME, FILTER)
  393. }
  394. fun saveSmartList(smart: String) {
  395. putStringPreference(context, KEY_FILENAME, SMART, smart)
  396. }
  397. fun getSmartList(): String {
  398. return getStringPreference(context, KEY_FILENAME, SMART)
  399. }
  400. fun saveTvSplitTunnel(tvSplitTunneling: ArrayList<TvSplitTunneling>) {
  401. putStringPreference(context, KEY_FILENAME, TV_SPLIT_CLASS, Gson().toJson(tvSplitTunneling))
  402. }
  403. fun getTvSplitTunnel(): ArrayList<TvSplitTunneling> {
  404. val tvSplitTunneling = Gson().fromJson<ArrayList<TvSplitTunneling>>(
  405. getStringPreference(context, KEY_FILENAME, TV_SPLIT_CLASS), TvSplitTunneling::class.java
  406. )
  407. return tvSplitTunneling
  408. }
  409. fun saveProtocol(protocol: Protocol) {
  410. putStringPreference(context, KEY_FILENAME, PROTOCOL, Gson().toJson(protocol))
  411. }
  412. fun getProtocol(): Protocol {
  413. var protocol = Gson().fromJson<Protocol>(
  414. getStringPreference(context, KEY_FILENAME, PROTOCOL), Protocol::class.java
  415. )
  416. protocol?.let {
  417. return protocol
  418. } ?: kotlin.run {
  419. return Protocol(
  420. AppEnum.WG_PROTOCOL.title, AppEnum.WG_PROTOCOL.key, 1
  421. // AppEnum.AUTO_PROTOCOL.title, AppEnum.IKEV2_PROTOCOL.key, 0
  422. ) //By default (AUTO) Protocol is selected (index 0 = AUTO). Checking IKEV2 first then check TCP/UDP
  423. }
  424. }
  425. // fun saveRadioBtnSplitPos(position: Int) {
  426. // putIntegerPreference(context, KEY_FILENAME, KEY_SPLIT_POS, position)
  427. // }
  428. //
  429. // fun getRadioBtnSplitPos(): Int {
  430. // return getIntegerPreference(context, KEY_FILENAME, KEY_SPLIT_POS)
  431. // }
  432. fun saveAdBlockState(status: Boolean) {
  433. putBooleanPreference(context, KEY_FILENAME, KEY_ADBLOCK_SWITCH, status)
  434. }
  435. fun getAdBlockState(): Boolean {
  436. return getBooleanPreference(context, KEY_FILENAME, KEY_ADBLOCK_SWITCH)
  437. }
  438. fun saveFcmToken(token: String) {
  439. putStringPreference(context, KEY_FILENAME, KEY_FCM, token)
  440. }
  441. fun getLoggedInState(): Boolean {
  442. return getBooleanPreference(context, KEY_FILENAME, KEY_ISLOGGEDIN)
  443. }
  444. fun setLoggedInState(state: Boolean) {
  445. putBooleanPreference(context, KEY_FILENAME, KEY_ISLOGGEDIN, state)
  446. }
  447. fun getConnectState(): Int {
  448. return getIntegerPreference(context, KEY_FILENAME, KEY_ISCONNECT)
  449. }
  450. fun setConnectState(state: Int) {
  451. putIntegerPreference(context, KEY_FILENAME, KEY_ISCONNECT, state)
  452. }
  453. fun isAutoOpenVpnConnected(): Boolean {
  454. return getBooleanPreference(context, KEY_FILENAME, KEY_AUTO_OPENVPN)
  455. }
  456. fun setAutoOpenVpnConnected(state: Boolean) {
  457. putBooleanPreference(context, KEY_FILENAME, KEY_AUTO_OPENVPN, state)
  458. }
  459. fun getFcmToken(): String {
  460. return getStringPreference(context, KEY_FILENAME, KEY_FCM)
  461. }
  462. fun saveXPlatformToken(token: String) {
  463. putStringPreference(context, KEY_FILENAME, X_PLATFORM_TOKEN, token)
  464. }
  465. fun getXPlatformToken(): String {
  466. return getStringPreference(context, KEY_FILENAME, X_PLATFORM_TOKEN)
  467. }
  468. fun saveSplitPosition(token: String) {
  469. putStringPreference(context, KEY_FILENAME, KEY_SPLIT_POS, token)
  470. }
  471. fun getSplitPosition(): String {
  472. return try {
  473. getStringPreference(context, KEY_FILENAME, KEY_SPLIT_POS, splitList[0])
  474. } catch (ex: Exception) {
  475. splitList[0]
  476. }
  477. }
  478. companion object {
  479. private const val KEY_FILENAME = "file_fastestvpn"
  480. private const val KEY_USER = "keydata_user"
  481. private const val KEY_PRODUCT = "keydata_product"
  482. private const val KEY_WIREGUARD = "keydata_wireguard"
  483. private const val KEY_IPINFO = "keydata_ipinfo"
  484. private const val KEY_USER_PASSWORD = "keydata_user_password"
  485. private const val KEY_SERVERS_DATA = "keydata_servers_data"
  486. private const val KEY_FEATURES_DATA = "keydata_features_data"
  487. private const val KEY_ENABLED_PROTOCOLS = "keydata_enabled_protocols"
  488. private const val KEY_AVAILABLE_PROTOCOLS = "keydata_available_protocols"
  489. private const val KEY_SERVERS = "keydata_server"
  490. private const val KEY_SELECTED_APPS = "keydata_selectedApps"
  491. private const val KEY_SELECTED_APPS_NO_VPN = "keydata_selectedAppsNoVpn"
  492. private const val KEY_SELECTED_APPS_NOT_ALLOW = "keydata_selectedAppsNotAllow"
  493. private const val KEY_SPLIT_TUNNEL = "keydata_tv_apps_name"
  494. private const val KEY_SPLIT_TUNNEL_TV = "keydata_tv_apps_package_name"
  495. private const val KEY_SPLIT_ENABLE_TV = "keydata_tv_apps_enable"
  496. private const val KEY_SPLIT_DISABLE_TV = "keydata_tv_apps_disable"
  497. private const val KEY_SPLIT_TUNNEL_ENTRY = "keydata_tv_apps_entry"
  498. private const val APP_DETAILS = "keydata_app_detail"
  499. private const val FILE_DETAILS = "keydata_file_details"
  500. private const val PROTOCOL = "keydata_protocol"
  501. private const val TV_SPLIT_CLASS = "keydata_tvsplitclass"
  502. private const val X_PLATFORM_TOKEN = "keydata_x_platform_token"
  503. private const val KEY_FCM = "keydata_fcm"
  504. private const val KEY_SPLIT_POS = "keydata_split_pos"
  505. private const val KEY_ACTIVITY = "keydata_activity"
  506. private const val KEY_ADBLOCK_SWITCH = "keydata_adblock"
  507. private const val KEY_ISLOGGEDIN = "key_isloggedin"
  508. private const val THEME = "key_theme"
  509. private const val KEY_ISCONNECT = "keydata_isconnect"
  510. private const val FILTER = "keydata_filter"
  511. private const val SMART = "keydata_smart"
  512. private const val KEY_SMART_SERVER = "keydata_smart_server"
  513. private const val KEY_AUTO_OPENVPN = "keydata_auto_openvpn"
  514. private const val KEY_RECOMMENDED = "keydata_recommended"
  515. private const val KEY_RECOMMENDED_LIST = "keydata_recommended_list"
  516. private const val KEY_CONNECTED_SERVER = "keydata_connected_server"
  517. private const val KEY_SUBSCRIPTION = "keydata_subscription"
  518. private const val KEY_RECENTLY_SERVERS = "keydata_recently_servers"
  519. }
  520. }