#typescript#bookmark#bookmark_manager#collaboration#nextjs#react_native#read_it_later#self_hosted#typescript
Linkwarden is a free, open-source bookmark manager that helps you save, organize, and preserve webpages in one place. It automatically captures screenshots and PDFs of pages so you can access them even if the original site disappears. You can highlight and annotate articles, organize links with tags and collections, and share or collaborate with others. It works on most browsers with extensions, supports syncing, bulk actions, and has powerful search features. You can self-host it for privacy or use their cloud service for convenience. This keeps your important links safe, easy to find, and useful for both personal and team projects[2][3][4].
https://github.com/linkwarden/linkwarden
🚀 Вышел стабильный JavaScript движок от Google для Android
Новая стабильная библиотека Jetpack JavaScript Engine позволит разработчикам выполнять JS код в изолированной и ограниченной среде.
class MainActivity : ComponentActivity() {
// Теперь nullable, без lateinit
private var jsSandbox: JavaScriptSandbox? = null
private var jsIsolate: JavaScriptIsolate? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (!JavaScriptSandbox.isSupported()) {
Log.e("JS", "JavaScriptSandbox не поддерживается")
return
}
lifecycleScope.launch {
// Создаём и сохраняем в nullable-поле
jsSandbox = JavaScriptSandbox
.createConnectedInstanceAsync(applicationContext)
.await()
jsIsolate = jsSandbox?.createIsolate()
// При выполнении гарантируем, что jsIsolate != null
val result: String = jsIsolate
?.evaluateJavaScriptAsync(JS_SCRIPT_SCRING)
?.await()
?: "Ошибка: isolate не инициализирован"
Log.d("JS", "Результат выполнения: $result")
}
}
override fun onDestroy() {
super.onDestroy()
// Закрываем только если не null
jsIsolate?.close()
jsSandbox?.close()
}
}
#jetpack#js