import * as MastodonAPI from "./MastodonAPI.js";
import * as BlueskyAPI from "./BlueskyAPI.js";
import * as TumblrAPI from "./TumblrAPI.js";
import * as Variables from "./Variables.js";

// Elements.
let PostButton = document.getElementsByClassName("Button")[0];
let VisibilityDropdown = document.getElementsByClassName("PostVisibility")[0];
let InputArea = document.getElementsByClassName("Text")[0];

// Clicking the beeg POST button.
PostButton.onclick = (event) => {
	Post();
}

async function Post() {
	let Text = InputArea.value;
	let Visible = VisibilityDropdown.value;
	// don't do anything if there is no value
	if (Text == "") {
		return;
	}
	// Mastodon posting.
	if (localStorage.getItem(Variables.MastodonAccessToken) != null) {
		let TempVisible;
		switch(Visible) {
			case "Public":
				TempVisible = "public";
				break;
			case "Quiet":
				TempVisible = "unlisted";
				break;
			case "Friend":
				TempVisible = "private";
				break;
			case "Private":
				TempVisible = "direct";
				break;
		}
		MastodonAPI.CreateStatus(Text, TempVisible);
	}
	// Bluesky posting.
	if (localStorage.getItem(Variables.BlueskyAccessToken) != null) {
		let TempVisible;
		switch(Visible) {
			case "Public":
				TempVisible = undefined;
				break;
			case "Quiet":
				TempVisible = undefined;
				break;
			case "Friend":
				TempVisible = [{"$type": "app.bsky.feed.threadgate#followingRule"}, {"$type": "app.bsky.feed.threadgate#followerRule"}];
				break;
			case "Private":
				TempVisible = [];
				break;
		}
		let Post = await BlueskyAPI.CreatePost(localStorage.getItem(Variables.BlueskyDID), Text);
		console.log(Post);
		let ThreadGate = await BlueskyAPI.SetThreadGate(localStorage.getItem(Variables.BlueskyDID), Post.uri, TempVisible);
		console.log(ThreadGate);
	}
	InputArea.value = "";
}

// Check if you can interact with the textbox
if (localStorage.getItem(Variables.MastodonAccessToken) == null && localStorage.getItem(Variables.BlueskyAccessToken) == null) {
	InputArea.disabled = true;
}