Unfollow tool for Bluesky

add blocking follows

Changed files
+31 -6
src
+1 -1
README.md
···
## cleanfollow-bsky
-
lil web app to unfollow deleted/deactivated/blocked by accounts
···
## cleanfollow-bsky
+
web app to unfollow deleted/deactivated/blocked/suspended bluesky accounts
+1 -2
index.html
···
<meta property="og:title" content="cleanfollow-bsky" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://cleanfollow-bsky.pages.dev" />
-
<meta property="og:description"
-
content="Unfollows blocked by, deleted, suspended, and deactivated bluesky accounts" />
<link rel="shortcut icon" type="image/ico" href="/src/assets/favicon.ico" />
<title>cleanfollow-bsky</title>
</head>
···
<meta property="og:title" content="cleanfollow-bsky" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://cleanfollow-bsky.pages.dev" />
+
<meta property="og:description" content="Unfollows blocked, deleted, suspended, and deactivated bluesky accounts" />
<link rel="shortcut icon" type="image/ico" href="/src/assets/favicon.ico" />
<title>cleanfollow-bsky</title>
</head>
+29 -3
src/App.tsx
···
enum RepoStatus {
BLOCKEDBY,
DELETED,
DEACTIVATED,
SUSPENDED,
···
Blocked By
</label>
</div>
</div>
</Show>
<div class="mt-5">
···
<Match when={record.status == RepoStatus.BLOCKEDBY}>
Blocked by
</Match>
<Match when={record.status == RepoStatus.SUSPENDED}>
Suspended
</Match>
···
handle: res.data.handle,
uri: record.uri,
status: RepoStatus.YOURSELF,
toBeDeleted: false,
});
}
···
<div class="flex flex-col items-center m-5">
<h1 class="text-2xl mb-5">cleanfollow-bsky</h1>
<div class="mb-3 text-center">
-
<p>
-
Unfollows blocked by, deleted, suspended, and deactivated accounts
-
</p>
<div>
<a
class="text-blue-600 hover:underline"
···
enum RepoStatus {
BLOCKEDBY,
+
BLOCKING,
DELETED,
DEACTIVATED,
SUSPENDED,
···
Blocked By
</label>
</div>
+
<div class="flex h-6 items-center">
+
<input
+
type="checkbox"
+
id="blocking"
+
class="h-4 w-4 rounded border-gray-300 text-indigo-600 focus:ring-indigo-600"
+
onChange={(e) =>
+
selectRecords(RepoStatus.BLOCKING, e.currentTarget.checked)
+
}
+
/>
+
<label for="blocking" class="ml-2">
+
Blocking
+
</label>
+
</div>
</div>
</Show>
<div class="mt-5">
···
<Match when={record.status == RepoStatus.BLOCKEDBY}>
Blocked by
</Match>
+
<Match when={record.status == RepoStatus.BLOCKING}>
+
Blocking
+
</Match>
<Match when={record.status == RepoStatus.SUSPENDED}>
Suspended
</Match>
···
handle: res.data.handle,
uri: record.uri,
status: RepoStatus.YOURSELF,
+
toBeDeleted: false,
+
});
+
} else if (
+
res.data.viewer?.blocking ||
+
res.data.viewer?.blockingByList
+
) {
+
setFollowRecords(followRecords.length, {
+
did: record.value.subject,
+
handle: res.data.handle,
+
uri: record.uri,
+
status: RepoStatus.BLOCKING,
toBeDeleted: false,
});
}
···
<div class="flex flex-col items-center m-5">
<h1 class="text-2xl mb-5">cleanfollow-bsky</h1>
<div class="mb-3 text-center">
+
<p>Unfollows blocked, deleted, suspended, and deactivated accounts</p>
<div>
<a
class="text-blue-600 hover:underline"