Skip to content

Instantly share code, notes, and snippets.

View PetkevichPavel's full-sized avatar
💭
🚀 Never Stop 🚀

Pavel Petkevich PetkevichPavel

💭
🚀 Never Stop 🚀
View GitHub Profile
@PetkevichPavel
PetkevichPavel / CodeExample.kt
Last active August 28, 2019 15:45
AN_Cloud Function: Code example.
fun Context.setDefaultRCFromFile() : Boolean =
File(filesDir, LOCAL_RC_JSON).takeIf { it.exists() }?.let {file->
val defaultRC = mutableMapOf<String, Any>()
gson.fromJson(file.inputStream().convertLocalJsonToString(), RCModel::class.java)?.let { rcModel ->
defaultRC[RemoteConfigConstants.RC_JSON_PARAM_NAME] = file.inputStream().convertLocalJsonToString()
remoteConfigManager.updateRc(rcModel)
remoteConfigManager.updateFetchState(true, currentDateTimestamp)
}
app?.firebaseRemoteConfig?.setDefaults(defaultRC)
file.inputStream().close()
@PetkevichPavel
PetkevichPavel / CodeExample.kt
Last active August 24, 2019 08:38
AN_Cloud Function: Code example.
fetchAndActivate().addOnCompleteListener { task ->
task.isSuccessful.takeIf { it }?.apply {
context.saveFile(getString(RemoteConfigConstants.RC_JSON_PARAM_NAME).toByteArray(),
LOCAL_RC_JSON)
}
}
@PetkevichPavel
PetkevichPavel / FileExtension.kt
Created August 24, 2019 08:37
AN_Cloud Function: Class for File extension functions.
/**
* Context extension function which will save the file into the device local storage.
* @param data - content of the file.
* @param fileName - name of the final file.
*/
fun Context.saveFile(data: ByteArray, fileName: String) =
openFileOutput(fileName, Context.MODE_PRIVATE)?.apply {
write(data)
close()
}
@PetkevichPavel
PetkevichPavel / RemoteConfigFunctions.kt
Last active August 24, 2019 09:03
AN_Cloud Function: Helpful class with certain functions for remote config.
class RemoteConfigFunctions(private val gson: Gson, private val context: Context,
private val app: App?,
private val remoteConfigManager: RemoteConfigManager) {
companion object {
private const val TAG = "RemoteConfigFunctions:"
private const val RECEIVER_TAG = "FCM Receiver:"
}
/**
@PetkevichPavel
PetkevichPavel / RemoteConfigConstants.kt
Last active August 24, 2019 08:29
An_Cloud Function: Class for Remote Config constants.
class RemoteConfigConstants {
companion object {
const val DEFAULT_LOCAL_RC_JSON = "RemoteConfig.json"
const val LOCAL_RC_JSON = "DeviceRemoteConfig.json"
const val RC_JSON_PARAM_NAME = "config_json"
const val RC_EXTRA_BACK_NOTIFICATION = "rc_extra_back_notification"
}
}
@PetkevichPavel
PetkevichPavel / MainActivity.kt
Last active August 24, 2019 08:27
AN_Cloud Function: Example of handleRcUpdate override in MainActivity.
override fun handleRcUpdate(isItServiceUpdate: Boolean,
isFeatureOnBoardingVisible: Boolean) {
super.handleRcUpdate(isItServiceUpdate, isFeatureOnBoardingVisible)
when {
isItServiceUpdate -> updateUrls()
isFeatureOnBoardingVisible ->
navigateToOnBoardingMenu(true)
}
}
@PetkevichPavel
PetkevichPavel / BaseActivity.kt
Created August 24, 2019 08:22
AN_Cloud Function: Base activity of the application.
abstract class BaseActivity : AppCompatActivity() {
companion object {
private const val TAG = "BaseActivity:"
private const val RECEIVER_TAG = "BaseActivity-Receiver:"
}
private val localBroadcastManager: LocalBroadcastManager by lazy {
LocalBroadcastManager.getInstance(this)
}
@PetkevichPavel
PetkevichPavel / FCMService.kt
Created August 24, 2019 08:20
AN_Cloud Function: Firebase Messaging Service for processing the notifications.
class FCMService : FirebaseMessagingService() {
companion object {
private const val TAG = "FCMService"
private const val RECEIVER_TAG = "Receiver:"
const val IN_AP_EX_STR_TITLE = "in_ap_ex_str_title"
const val IN_AP_EX_STR_BODY = "in_ap_ex_str_body"
}
@SuppressLint("TimberArgCount")
@PetkevichPavel
PetkevichPavel / AppExtension.kt
Created August 24, 2019 08:17
AN_Cloud Function: App extension class.
/**
* App extension function, which return reference on RemoteConfigFunctions.
* @return reference on RemoteConfigFunctions.
*/
fun App.getRCF() = RemoteConfigFunctions(gson, this, this, remoteConfigManager)
@PetkevichPavel
PetkevichPavel / App.kt
Last active August 28, 2019 15:30
AN_Cloud Function: Application class.
override fun onCreate() {
super.onCreate()
initFirebase()
this.getRCF().setDefaultRC()
}
private fun initFirebase() {
FirebaseApp.initializeApp(this)
firebaseRemoteConfig = FirebaseRemoteConfig.getInstance()
val configSettings = FirebaseRemoteConfigSettings.Builder()
.setFetchTimeoutInSeconds(0)