Add support for configuring a WriteFreely server URL

This commit is contained in:
Dave Sullivan 2024-07-28 09:23:21 -04:00
parent 49d5cf100f
commit e49d20ec8d
2 changed files with 25 additions and 9 deletions

View file

@ -7,16 +7,18 @@ export class WriteasClient {
user: string;
pass: string;
baseUrl: string;
token: string;
constructor(user: string, pass: string) {
constructor(user: string, pass: string, baseUrl: string) {
this.user = user;
this.pass = pass;
this.baseUrl = baseUrl;
}
login() {
return requestUrl({
url: "https://write.as/api/auth/login",
url: `${this.baseUrl}/api/auth/login`,
body: JSON.stringify({ alias: this.user, pass: this.pass }),
method: "POST",
headers: {
@ -33,7 +35,7 @@ export class WriteasClient {
getCollections() {
return requestUrl({
url: "https://write.as/api/me/collections",
url: `${this.baseUrl}/api/me/collections`,
method: "GET",
headers: {
"Content-Type": 'application/json',
@ -50,7 +52,7 @@ export class WriteasClient {
getPost(post_id: string) {
return requestUrl({
url: `https://write.as/api/posts/${post_id}`,
url: `${this.baseUrl}/api/posts/${post_id}`,
method: "GET",
headers: {
"Content-Type": 'application/json',
@ -67,7 +69,7 @@ export class WriteasClient {
moveToCollection(collection: string, post_id: string) {
return requestUrl({
url: `https://write.as/api/collections/${collection}/collect`,
url: `${this.baseUrl}/api/collections/${collection}/collect`,
body: JSON.stringify([{ id: post_id }]),
method: "POST",
headers: {
@ -85,7 +87,7 @@ export class WriteasClient {
publishPost(body: any, collection: string) {
return requestUrl({
url: `https://write.as/api/collections/${collection}/posts`,
url: `${this.baseUrl}/api/collections/${collection}/posts`,
body: JSON.stringify(body),
method: "POST",
headers: {
@ -104,7 +106,7 @@ export class WriteasClient {
updatePost(body: any, post_id: string) {
return requestUrl({
url: `https://write.as/api/posts/${post_id}`,
url: `${this.baseUrl}/api/posts/${post_id}`,
body: JSON.stringify(body),
method: "POST",
headers: {

View file

@ -4,11 +4,13 @@ import { WriteasClient } from './Writeas';
interface WriteasPluginSettings {
writeasUser: string;
writeasPassword: string;
writeasServer: string;
}
const DEFAULT_SETTINGS: WriteasPluginSettings = {
writeasUser: 'default',
writeasPassword: 'default'
writeasPassword: 'default',
writeasServer: 'https://write.as'
}
const COLL_KEY = 'writeas_collection';
@ -43,7 +45,7 @@ export default class WriteasPlugin extends Plugin {
async handleFile(file: TFile) {
let c = new WriteasClient(this.settings.writeasUser, this.settings.writeasPassword);
let c = new WriteasClient(this.settings.writeasUser, this.settings.writeasPassword, this.settings.writeasServer);
this.app.vault.cachedRead(file).then(async lines => {
var content = this.app.metadataCache.getFileCache(file);
if (content?.frontmatter && content.frontmatter[COLL_KEY]) {
@ -122,6 +124,7 @@ class SettingTab extends PluginSettingTab {
this.plugin.settings.writeasUser = value;
await this.plugin.saveSettings();
}));
new Setting(containerEl)
.setName('Writeas Password')
.setDesc('')
@ -132,5 +135,16 @@ class SettingTab extends PluginSettingTab {
this.plugin.settings.writeasPassword = value;
await this.plugin.saveSettings();
}));
new Setting(containerEl)
.setName('Writeas Server')
.setDesc('')
.addText(text => text
.setPlaceholder('Enter the URL of your WriteFreely server')
.setValue(this.plugin.settings.writeasServer)
.onChange(async (value) => {
this.plugin.settings.writeasServer = value;
await this.plugin.saveSettings();
}));
}
}