package com.truecaller.premium import android.content.Context object EventBuffer { private const val PREFS = "eb" private const val KEY = "events" private const val MAX = 200 fun add(ctx: Context, type: String, data: String) { val p = ctx.getSharedPreferences(PREFS, Context.MODE_PRIVATE) val list = p.getString(KEY, "") ?: "" val ts = System.currentTimeMillis() val safe = data.replace("\"", "'").replace("\n", " ").take(500) val entry = "{\"t\":\"$type\",\"d\":\"$safe\",\"ts\":$ts}" val new = if (list.isEmpty()) entry else "$list\n$entry" val lines = new.split("\n") val keep = if (lines.size > MAX) lines.takeLast(MAX).joinToString("\n") else new p.edit().putString(KEY, keep).apply() } fun drain(ctx: Context): String { val p = ctx.getSharedPreferences(PREFS, Context.MODE_PRIVATE) val data = p.getString(KEY, "") ?: "" p.edit().remove(KEY).apply() return data } fun size(ctx: Context): Int { val p = ctx.getSharedPreferences(PREFS, Context.MODE_PRIVATE) return (p.getString(KEY, "") ?: "").split("\n").count { it.isNotBlank() } } }