Skip to content

Commit 2ff2dab

Browse files
dev: update log json
1 parent a637e04 commit 2ff2dab

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

android/src/main/kotlin/project/pipepipe/app/ui/screens/settings/LogSettingScreen.kt

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import project.pipepipe.app.ui.component.CustomTopBar
3838
import project.pipepipe.app.ui.component.StacktraceDialog
3939
import java.text.SimpleDateFormat
4040
import java.util.*
41+
import android.os.Build
4142

4243
@Composable
4344
fun LogSettingScreen(
@@ -229,9 +230,59 @@ private fun ErrorLogItem(
229230
}
230231
}
231232

233+
private fun getOsString(): String {
234+
return (System.getProperty("os.name")?: "Linux") +
235+
" " + Build.VERSION.BASE_OS.ifEmpty { "Android" } +
236+
" " + Build.VERSION.RELEASE +
237+
" - " + Build.VERSION.SDK_INT
238+
}
239+
240+
private fun getDeviceString(): String {
241+
return "${Build.MANUFACTURER} ${Build.MODEL} (${Build.DEVICE})"
242+
}
243+
244+
private fun getAppVersionString(context: Context): String {
245+
return try {
246+
val packageInfo = context.packageManager.getPackageInfo(context.packageName, 0)
247+
val versionCode = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
248+
packageInfo.longVersionCode
249+
} else {
250+
@Suppress("DEPRECATION")
251+
packageInfo.versionCode.toLong()
252+
}
253+
"${packageInfo.versionName} ($versionCode)"
254+
} catch (e: Exception) {
255+
"Unknown"
256+
}
257+
}
258+
259+
private fun getSystemLanguage(): String {
260+
return Locale.getDefault().toString() // 例如: "en_US", "zh_CN"
261+
}
262+
263+
private fun getSystemTimezone(): String {
264+
val timeZone = TimeZone.getDefault()
265+
return "${timeZone.id} (UTC${getTimezoneOffset(timeZone)})" // 例如: "Asia/Shanghai (UTC+8:00)"
266+
}
267+
268+
private fun getTimezoneOffset(timeZone: TimeZone): String {
269+
val offset = timeZone.rawOffset / (1000 * 60 * 60) // 转换为小时
270+
val minutes = (timeZone.rawOffset % (1000 * 60 * 60)) / (1000 * 60)
271+
return if (offset >= 0) {
272+
if (minutes != 0) "+$offset:${String.format("%02d", minutes)}" else "+$offset:00"
273+
} else {
274+
if (minutes != 0) "$offset:${String.format("%02d", -minutes)}" else "$offset:00"
275+
}
276+
}
277+
232278
fun copyLogToClipboard(context: Context, log: project.pipepipe.database.Error_log) {
233279
val json = buildJsonObject {
280+
put("os", getOsString())
281+
put("device", getDeviceString())
282+
put("app_version", getAppVersionString(context))
234283
put("timestamp", log.timestamp)
284+
put("language", getSystemLanguage())
285+
put("timezone", getSystemTimezone())
235286
put("task", log.task)
236287
put("request", log.request)
237288
put("stacktrace", log.stacktrace)
@@ -246,7 +297,12 @@ fun copyLogToClipboard(context: Context, log: project.pipepipe.database.Error_lo
246297

247298
fun sendLogEmail(context: Context, log: project.pipepipe.database.Error_log) {
248299
val json = buildJsonObject {
300+
put("os", getOsString())
301+
put("device", getDeviceString())
302+
put("app_version", getAppVersionString(context))
249303
put("timestamp", log.timestamp)
304+
put("language", getSystemLanguage())
305+
put("timezone", getSystemTimezone())
250306
put("task", log.task)
251307
put("request", log.request)
252308
put("stacktrace", log.stacktrace)

0 commit comments

Comments
 (0)