Skip to content

Commit

Permalink
Merge branch 'release/1.3.2'
Browse files Browse the repository at this point in the history
  • Loading branch information
lukeleppan committed Nov 13, 2020
2 parents 7064cd9 + 546111f commit fbbd615
Show file tree
Hide file tree
Showing 7 changed files with 151 additions and 22 deletions.
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,22 @@ You can also reconnect to discord rich presence via the `Reconnect to Discord` c

### Settings

#### Vault Name Settings

- Toggle whether or not to show **Vault Name**
- Set a custom **Vault Name** to show publicly

#### File Name Settings

- Toggle whether or not to show **Current File Name**
- Toggle whether or not to show the current file **extension**

#### Time Settings

- Toggle Whether or not to use the total time you have been using Obsidian, instead of the time spent editing a single file.

#### Notice Settings

- Toggle whether or not to show **Connection Notices**

### Issues
Expand Down
2 changes: 1 addition & 1 deletion manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"id": "obsidian-discordrpc",
"name": "Discord Rich Presence",
"version": "1.2.0",
"version": "1.3.2",
"description": "Update your Discord Status to show your friends what you are working on in Obsidian. With Discord Rich Presence.",
"author": "Luke Leppan",
"authorUrl": "https://lukeleppan.com",
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "obsidian-discordrpc",
"version": "1.2.0",
"version": "1.3.2",
"description": "Update your Discord Status to show your friends what you are working on in Obsidian. With Discord Rich Presence.",
"main": "main.js",
"scripts": {
Expand Down
6 changes: 3 additions & 3 deletions src/logger.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { Notice, Plugin } from "obsidian";
import { DiscordRPCSettings } from "./settings/settings";
import { Notice } from "obsidian";
import ObsidianDiscordRPC from "./main";

export class Logger {
private settings: DiscordRPCSettings;
plugin: ObsidianDiscordRPC = (this as any).plugin;

log(message: string, showPopups: boolean): void {
if (showPopups) {
Expand Down
68 changes: 55 additions & 13 deletions src/main.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Client } from "discord-rpc";
import { App, Plugin, PluginManifest, TFile } from "obsidian";
import { Plugin, PluginManifest, TFile } from "obsidian";
import { Logger } from "./logger";
import { DiscordRPCSettings, PluginState } from "./settings/settings";
import { DiscordRPCSettingsTab } from "./settings/settings-tab";
Expand All @@ -11,6 +11,8 @@ export default class ObsidianDiscordRPC extends Plugin {
public statusBar: StatusBar;
public rpc: Client;
public logger: Logger = new Logger();
public currentFile: TFile;
public loadedTime: Date;

setState(state: PluginState) {
this.state = state;
Expand All @@ -29,6 +31,7 @@ export default class ObsidianDiscordRPC extends Plugin {
}

async onload() {
this.loadedTime = new Date();
let statusBarEl = this.addStatusBarItem();
this.statusBar = new StatusBar(statusBarEl);

Expand All @@ -53,11 +56,25 @@ export default class ObsidianDiscordRPC extends Plugin {
});

await this.connectDiscord();

let activeLeaf = this.app.workspace.activeLeaf;
let files: TFile[] = this.app.vault.getMarkdownFiles();

files.forEach((file) => {
if (file.basename === activeLeaf.getDisplayText()) {
this.onFileOpen(file);
}
});
}

async onFileOpen(file: TFile) {
if (this.getState() == PluginState.connected) {
await this.setActivity(this.app.vault.getName(), file.basename);
this.currentFile = file;
if (this.getState() === PluginState.connected) {
await this.setActivity(
this.app.vault.getName(),
file.basename,
file.extension
);
}
}

Expand Down Expand Up @@ -85,35 +102,60 @@ export default class ObsidianDiscordRPC extends Plugin {
await this.rpc.login({
clientId: "763813185022197831",
});
await this.setActivity(this.app.vault.getName(), "...");
await this.setActivity(this.app.vault.getName(), "...", "");
} catch (error) {
this.setState(PluginState.disconnected);
this.statusBar.displayState(this.getState());
this.logger.log("Failed to connect to Discord", this.settings.showPopups);
}
}

async setActivity(vaultName: string, fileName: string): Promise<void> {
if (this.getState() == PluginState.connected) {
async setActivity(
vaultName: string,
fileName: string,
fileExtension: string
): Promise<void> {
if (this.getState() === PluginState.connected) {
let vault: string;
if (this.settings.customVaultName === "") {
vault = vaultName;
} else {
vault = this.settings.customVaultName;
}

let file: string;
if (this.settings.showFileExtension) {
file = fileName + "." + fileExtension;
} else {
file = fileName;
}

let date: Date;
if (this.settings.useLoadedTime) {
date = this.loadedTime;
} else {
date = new Date();
}

if (this.settings.showVaultName && this.settings.showCurrentFileName) {
await this.rpc.setActivity({
details: `Editing ${fileName}`,
state: `Vault: ${vaultName}`,
startTimestamp: new Date(),
details: `Editing ${file}`,
state: `Vault: ${vault}`,
startTimestamp: date,
largeImageKey: "logo",
largeImageText: "Obsidian",
});
} else if (this.settings.showVaultName) {
await this.rpc.setActivity({
state: `Vault: ${vaultName}`,
startTimestamp: new Date(),
state: `Vault: ${vault}`,
startTimestamp: date,
largeImageKey: "logo",
largeImageText: "Obsidian",
});
} else if (this.settings.showCurrentFileName) {
await this.rpc.setActivity({
details: `Editing ${fileName}`,
startTimestamp: new Date(),
details: `Editing ${file}`,
startTimestamp: date,
largeImageKey: "logo",
largeImageText: "Obsidian",
});
Expand Down
78 changes: 74 additions & 4 deletions src/settings/settings-tab.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { PluginSettingTab, Setting } from "obsidian";
import { PluginSettingTab, Setting, TFile } from "obsidian";
import { Logger } from "src/logger";
import ObsidianDiscordRPC from "src/main";

Expand All @@ -12,6 +12,7 @@ export class DiscordRPCSettingsTab extends PluginSettingTab {
containerEl.empty();
containerEl.createEl("h2", { text: "Discord Rich Presence Settings" });

containerEl.createEl("h3", { text: "Vault Name Settings" });
new Setting(containerEl)
.setName("Show Vault Name")
.setDesc(
Expand All @@ -28,10 +29,33 @@ export class DiscordRPCSettingsTab extends PluginSettingTab {
this.logger.logIgnoreNoNotice("Vault Name is no longer Visable");
}

plugin.setActivity(this.app.vault.getName(), "...");
plugin.setActivity(
this.app.vault.getName(),
plugin.currentFile.basename,
plugin.currentFile.extension
);
})
);

new Setting(containerEl)
.setName("Set Custom Vault Name")
.setDesc(
"Change the vault name shown publicly. Leave blank to use your actual vault name."
)
.addText((text) =>
text.setValue(plugin.settings.customVaultName).onChange((value) => {
plugin.settings.customVaultName = value;
plugin.saveData(plugin.settings);

plugin.setActivity(
this.app.vault.getName(),
plugin.currentFile.basename,
plugin.currentFile.extension
);
})
);

containerEl.createEl("h3", { text: "File Name Settings" });
new Setting(containerEl)
.setName("Show Current File Name")
.setDesc("Enable this to show the name of the file you are working on.")
Expand All @@ -48,10 +72,52 @@ export class DiscordRPCSettingsTab extends PluginSettingTab {
this.logger.logIgnoreNoNotice("File Name is no longer Visable");
}

plugin.setActivity(this.app.vault.getName(), "...");
plugin.setActivity(
this.app.vault.getName(),
plugin.currentFile.basename,
plugin.currentFile.extension
);
})
);

new Setting(containerEl)
.setName("Show File Extension")
.setDesc("Enable this to show file extension.")
.addToggle((boolean) =>
boolean
.setValue(plugin.settings.showFileExtension)
.onChange((value) => {
plugin.settings.showFileExtension = value;
plugin.saveData(plugin.settings);

plugin.setActivity(
this.app.vault.getName(),
plugin.currentFile.basename,
plugin.currentFile.extension
);
})
);

containerEl.createEl("h3", { text: "Time Settings" });
new Setting(containerEl)
.setName("Use Obsidian Total Time")
.setDesc(
"Enable to use the total time you have been using Obsidian, instead of the time spent editing a single file."
)
.addToggle((boolean) => {
boolean.setValue(plugin.settings.useLoadedTime).onChange((value) => {
plugin.settings.useLoadedTime = value;
plugin.saveData(plugin.settings);

plugin.setActivity(
this.app.vault.getName(),
plugin.currentFile.basename,
plugin.currentFile.extension
);
});
});

containerEl.createEl("h3", { text: "Notice Settings" });
new Setting(containerEl)
.setName("Show Notices")
.setDesc("Enable this to show connection Notices.")
Expand All @@ -66,7 +132,11 @@ export class DiscordRPCSettingsTab extends PluginSettingTab {
this.logger.logIgnoreNoNotice("Notices Disabled");
}

plugin.setActivity(this.app.vault.getName(), "...");
plugin.setActivity(
this.app.vault.getName(),
plugin.currentFile.basename,
plugin.currentFile.extension
);
})
);
}
Expand Down
3 changes: 3 additions & 0 deletions src/settings/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ export class DiscordRPCSettings {
showVaultName: boolean = true;
showCurrentFileName: boolean = true;
showPopups: boolean = true;
customVaultName: string = "";
showFileExtension: boolean = false;
useLoadedTime: boolean = false;
}

export enum PluginState {
Expand Down

0 comments on commit fbbd615

Please # to comment.