Compare commits

..

No commits in common. "5a4079bc1fcd8d7c7e53dac8de6590eb083bd907" and "8d08cc435ac128b3bfe3c6555e16f4980ff443e5" have entirely different histories.

3 changed files with 4 additions and 135 deletions

View file

@ -1,7 +1,7 @@
{
"name": "pdsmanager",
"type": "module",
"version": "0.2.2",
"version": "0.2.1",
"scripts": {
"dev": "astro dev",
"build": "astro build",

View file

@ -4,7 +4,6 @@ import { useRefresh } from "../../../lib/RefreshContext";
interface User {
did: string;
handle?: string;
displayName?: string;
description?: string;
avatar?: {
@ -15,7 +14,6 @@ interface User {
createdAt: string;
}
interface RepoResponse {
cursor: string;
repos: {
@ -81,16 +79,6 @@ export default function UserList() {
show: false,
user: null,
});
const [editModal, setEditModal] = useState<{
show: boolean;
user: User | null;
newHandle: string;
}>({
show: false,
user: null,
newHandle: "",
});
const resetState = () => {
setUsers([]);
@ -120,7 +108,6 @@ export default function UserList() {
const data = await response.json();
return {
did,
handle: data.value.handle,
displayName: data.value.displayName,
description: data.value.description,
avatar: data.value.avatar,
@ -223,48 +210,6 @@ export default function UserList() {
}
};
const updateUserHandle = async (did: string, newHandle: string) => {
try {
setLoading(true);
setError(null);
const baseUrl = await Settings.getServiceUrl();
if (!baseUrl) throw new Error("Service URL not configured");
const headers = {
Authorization: await getAuthHeader(),
"Content-Type": "application/json",
};
const response = await fetch(
`${baseUrl}/xrpc/com.atproto.admin.updateAccountHandle`,
{
method: "POST",
headers,
body: JSON.stringify({
did,
handle: newHandle,
}),
}
);
if (!response.ok) {
const errorText = await response.text();
console.error("Error response:", errorText);
throw new Error(
`Failed to update handle: ${response.status} ${response.statusText}`
);
}
await fetchUsers(); // Refresh the user list after successful update
} catch (err) {
console.error("Update handle error:", err);
setError(err instanceof Error ? err.message : "Failed to update handle");
} finally {
setLoading(false);
}
};
useEffect(() => {
async function checkSettings() {
try {
@ -359,69 +304,6 @@ export default function UserList() {
</button>
</div>
{/* Edit Handle Modal */}
{editModal.show && editModal.user && (
<dialog className="modal modal-open">
<div className="modal-box">
<h3 className="font-bold text-lg">Edit Handle</h3>
<p className="py-4">
Update handle for{" "}
<span className="font-semibold">
{editModal.user.displayName || "Anonymous"}
</span>.
<br />
<br />
<span className="font-bold">**Note that you will need a "_atproto" TXT record with the corresponding "did=SOME_DID_NUMBER" before changing your handle to a subdomain of your PDS domain.</span>
</p>
<div className="form-control">
<label className="label">
<span className="label-text">New Handle</span>
</label>
<input
type="text"
placeholder="new.handle.pds.domain"
className="input input-bordered"
value={editModal.newHandle}
onChange={(e) =>
setEditModal({ ...editModal, newHandle: e.target.value })
}
/>
</div>
<div className="modal-action">
<button
className="btn"
onClick={() =>
setEditModal({ show: false, user: null, newHandle: "" })
}
>
Cancel
</button>
<button
className="btn btn-primary"
onClick={async () => {
if (editModal.user && editModal.newHandle) {
await updateUserHandle(editModal.user.did, editModal.newHandle);
setEditModal({ show: false, user: null, newHandle: "" });
}
}}
disabled={!editModal.newHandle}
>
Update Handle
</button>
</div>
</div>
<form method="dialog" className="modal-backdrop">
<button
onClick={() =>
setEditModal({ show: false, user: null, newHandle: "" })
}
>
close
</button>
</form>
</dialog>
)}
{/* Confirmation Modal */}
{deleteConfirmation.show && deleteConfirmation.user && (
<dialog className="modal modal-open">
@ -514,9 +396,6 @@ export default function UserList() {
<h2 className="text-lg font-semibold">
{user.displayName || "Anonymous"}
</h2>
<div className="font-mono text-sm opacity-70 mt-1">
{user.handle}
</div>
<div className="font-mono text-sm opacity-70 mt-1">
{user.did}
</div>
@ -526,21 +405,11 @@ export default function UserList() {
</p>
)}
</div>
<div className="flex flex-col gap-2">
<button
onClick={() => setEditModal({
show: true,
user,
newHandle: user.handle || ""
})}
className="btn btn-sm btn-primary"
disabled={loading}
>
Edit Handle
</button>
<button
onClick={() => setDeleteConfirmation({ show: true, user })}
onClick={() =>
setDeleteConfirmation({ show: true, user })
}
className="btn btn-sm btn-error"
disabled={loading}
>

0
src/types/index.ts Normal file
View file