Skip to content

Instantly share code, notes, and snippets.

@n0vedad
Created October 10, 2024 22:09
Show Gist options
  • Save n0vedad/41a769232a2f71162cda57b1277b7076 to your computer and use it in GitHub Desktop.
Save n0vedad/41a769232a2f71162cda57b1277b7076 to your computer and use it in GitHub Desktop.
bsky recursive skeets
import { initializeConfig } from './config.js';
import { do_auth, display_auth_mode } from './auth.js';
let { ATP_HOST, createdAt, skeetArray, textinput, previewArea } = initializeConfig();
// Hilfsfunktion zur Vereinfachung der DOM-Selektion
function qs(q) {
return document.querySelector(q);
}
document.addEventListener('DOMContentLoaded', function() {
// Zugriff auf DOM-Elemente mittels der qs-Hilfsfunktion
const usernameInput = qs("#username");
const passwordInput = qs("#password");
const submitButton = qs("#submitButton");
const skeetButton = qs("#skeetButton");
const addButton = qs("#addButton");
textinput = qs("#textInput");
previewArea = qs("#preview");
// Event Listener für die Authentifizierung und weitere Interaktionen
submitButton.addEventListener('click', () => do_auth(usernameInput.value, passwordInput.value));
skeetButton.addEventListener('click', send_skeet);
addButton.addEventListener('click', put_array);
// Startzustand der Anwendung festlegen
display_auth_mode();
});
// Funktionen für das Hinzufügen und Anzeigen von Skeets
function put_array() {
const editError = qs("#editError");
editError.innerText = "";
let arrayText = textinput.value;
if (arrayText.trim() !== "") {
skeetArray.push(arrayText);
textinput.value = "";
previewArea.textContent = skeetArray.join("\n");
}
}
// Funktion zum Senden von Skeets
async function send_skeet() {
const editError = qs("#editError");
previewArea.textContent = "";
editError.innerText = "processing...";
let rkeyPrefix = "3l5xdjmeh5j2";
if (skeetArray.length === 0) {
editError.innerText = "Error! No skeets available";
return;
}
for (let i = skeetArray.length - 1; i >= 0; i--) {
let textFromArray = skeetArray[i];
let currentRkey = rkeyPrefix + String.fromCharCode(97 + i);
let nextIndex = (i + 1) % skeetArray.length;
let nextRkey = rkeyPrefix + String.fromCharCode(97 + nextIndex);
let payload = {
"repo": localStorage.getItem("did"),
"collection": "app.bsky.feed.post",
"rkey": currentRkey,
"record": {
"text": textFromArray,
"createdAt": createdAt,
"$type": "app.bsky.feed.post",
"embed": {
"$type": "app.bsky.embed.record",
"record": {
"cid": "bafyreigzwrx4drvm3yz3qm46ie3zjyw47va2mzqz5hmd6q6wnpfd3ljvsy",
"uri": "at://" + localStorage.getItem("did") + "/app.bsky.feed.post/" + nextRkey
}
}
}
};
let res = await fetch(ATP_HOST + "/xrpc/com.atproto.repo.putRecord", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer " + localStorage.getItem("accessJwt")
},
body: JSON.stringify(payload)
});
let res_json = await res.json();
if (res_json.error) {
editError.innerText = JSON.stringify(res_json);
return;
}
}
skeetArray = [];
editError.innerText = "Processed!";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment