Compare commits
6 Commits
release-20
...
release-20
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6106d1cd22 | ||
|
|
50b83ebacf | ||
|
|
566308d889 | ||
|
|
e878d1fe33 | ||
|
|
d88084fb9a | ||
|
|
f8639f2967 |
@@ -243,12 +243,14 @@ async fn main() {
|
||||
let socket_path = std::path::Path::new(&args.socket);
|
||||
if !socket_path.exists() {
|
||||
tracing::error!("CRITICAL: rTorrent socket not found at {:?}.", socket_path);
|
||||
tracing::warn!(
|
||||
tracing::error!(
|
||||
"HINT: Make sure rTorrent is running and the SCGI socket is enabled in .rtorrent.rc"
|
||||
);
|
||||
tracing::warn!(
|
||||
tracing::error!(
|
||||
"HINT: You can configure the socket path via --socket ARG or RTORRENT_SOCKET ENV."
|
||||
);
|
||||
tracing::error!("FATAL: VibeTorrent cannot start without a running rTorrent instance. Exiting.");
|
||||
std::process::exit(1);
|
||||
} else {
|
||||
tracing::info!("Socket file exists. Testing connection...");
|
||||
let client = xmlrpc::RtorrentClient::new(&args.socket);
|
||||
@@ -259,7 +261,11 @@ async fn main() {
|
||||
let version = xmlrpc::parse_string_response(&xml).unwrap_or(xml);
|
||||
tracing::info!("Connected to rTorrent successfully. Version: {}", version);
|
||||
}
|
||||
Err(e) => tracing::error!("Socket exists but failed to connect to rTorrent: {}", e),
|
||||
Err(e) => {
|
||||
tracing::error!("CRITICAL: Socket exists but failed to connect to rTorrent: {}", e);
|
||||
tracing::error!("FATAL: Ensure rTorrent is fully started and the socket has correct permissions. Exiting.");
|
||||
std::process::exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -597,10 +597,12 @@ fn TorrentRow(
|
||||
on:click=move |_| store.selected_torrent.set(Some(stored_hash.get_value()))
|
||||
>
|
||||
<DataTableCell class="w-12 px-4">
|
||||
<Checkbox
|
||||
checked=is_selected
|
||||
on_checked_change=on_select
|
||||
/>
|
||||
<div on:click=move |e| e.stop_propagation()>
|
||||
<Checkbox
|
||||
checked=is_selected
|
||||
on_checked_change=on_select
|
||||
/>
|
||||
</div>
|
||||
</DataTableCell>
|
||||
|
||||
{move || visible_columns.get().contains("Name").then({
|
||||
@@ -730,17 +732,23 @@ fn TorrentCard(
|
||||
}
|
||||
)
|
||||
on:click=move |_| {
|
||||
let current = is_selected.get();
|
||||
on_select.run(!current);
|
||||
store.selected_torrent.set(Some(stored_hash.get_value()));
|
||||
}
|
||||
>
|
||||
<div class="p-4 space-y-3">
|
||||
<div class="flex justify-between items-start gap-3">
|
||||
<div class="flex-1 min-w-0">
|
||||
<h3 class="text-sm font-bold leading-tight line-clamp-2 break-all">{t_name.clone()}</h3>
|
||||
<div class="flex items-start gap-3 flex-1 min-w-0">
|
||||
<div on:click=move |e| e.stop_propagation() class="mt-0.5">
|
||||
<Checkbox
|
||||
checked=is_selected
|
||||
on_checked_change=on_select
|
||||
/>
|
||||
</div>
|
||||
<div class="flex-1 min-w-0">
|
||||
<h3 class="text-sm font-bold leading-tight line-clamp-2 break-all">{t_name.clone()}</h3>
|
||||
</div>
|
||||
</div>
|
||||
<Badge variant=status_variant class="uppercase tracking-wider text-[10px]">
|
||||
<Badge variant=status_variant class="uppercase tracking-wider text-[10px] shrink-0">
|
||||
{format!("{:?}", t.status)}
|
||||
</Badge>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
const CACHE_NAME = "vibetorrent-v2";
|
||||
const CACHE_NAME = "vibetorrent-v3";
|
||||
const ASSETS_TO_CACHE = [
|
||||
"/",
|
||||
"/index.html",
|
||||
@@ -51,6 +51,11 @@ self.addEventListener("activate", (event) => {
|
||||
self.addEventListener("fetch", (event) => {
|
||||
const url = new URL(event.request.url);
|
||||
|
||||
// Skip unsupported schemes (like chrome-extension://)
|
||||
if (!url.protocol.startsWith("http")) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Network-first strategy for API calls
|
||||
if (url.pathname.startsWith("/api/")) {
|
||||
event.respondWith(
|
||||
@@ -75,10 +80,12 @@ self.addEventListener("fetch", (event) => {
|
||||
fetch(event.request)
|
||||
.then((response) => {
|
||||
// Cache the latest version of the HTML
|
||||
const responseToCache = response.clone();
|
||||
caches.open(CACHE_NAME).then((cache) => {
|
||||
cache.put(event.request, responseToCache);
|
||||
});
|
||||
if (response && response.status === 200) {
|
||||
const responseToCache = response.clone();
|
||||
caches.open(CACHE_NAME).then((cache) => {
|
||||
cache.put(event.request, responseToCache);
|
||||
});
|
||||
}
|
||||
return response;
|
||||
})
|
||||
.catch(() => {
|
||||
|
||||
Reference in New Issue
Block a user