Skip to content

Commit

Permalink
Add message inviting user to Discord every 10 usages
Browse files Browse the repository at this point in the history
  • Loading branch information
gememma committed May 17, 2024
1 parent d892311 commit 06929f7
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
1 change: 1 addition & 0 deletions changelog.d/114.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Users will ocassionally be invited to join the Discord server
32 changes: 32 additions & 0 deletions src/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,16 @@ const FEEDBACK_COUNTER = 'mirrord-feedback-counter';
*/
const FEEDBACK_COUNTER_REVIEW_AFTER = 100;

/**
* Key to access the feedback counter (see `tickDiscordCounter`) from the global user config.
*/
const DISCORD_COUNTER = 'mirrord-discord-counter';

/**
* Amount of times we run mirrord before inviting the user to join the Discord server.
*/
const DISCORD_COUNTER_PROMPT_AFTER = 10;

const TARGET_TYPE_DISPLAY: Record<string, string> = {
pod: 'Pod',
deployment: 'Deployment',
Expand Down Expand Up @@ -378,6 +388,7 @@ export class MirrordAPI {
async binaryExecute(target: string | null, configFile: string | null, executable: string | null, configEnv: EnvVars): Promise<MirrordExecution> {
tickMirrordForTeamsCounter();
tickFeedbackCounter();
tickDiscordCounter();

/// Create a promise that resolves when the mirrord process exits
return await vscode.window.withProgress({
Expand Down Expand Up @@ -543,3 +554,24 @@ function tickFeedbackCounter() {
.info();
}
}

/**
* Updates the global Discord counter.
* After each `DISCORD_COUNTER_PROMPT_AFTER` mirrord runs, displays a message asking the user to join the discord.
*/
function tickDiscordCounter() {
const previousRuns = parseInt(globalContext.globalState.get(DISCORD_COUNTER) ?? '0');
const currentRuns = previousRuns + 1;

globalContext.globalState.update(DISCORD_COUNTER, currentRuns);

if ((currentRuns % DISCORD_COUNTER_PROMPT_AFTER) === 0) {
new NotificationBuilder()
.withMessage(`Need any help with mirrord? Come chat with our team on Discord!`)
.withGenericAction("Join us!", async () => {
vscode.commands.executeCommand(MirrordStatus.joinDiscordCommandId);
})
.withDisableAction('promptReview')
.info();
}
}

0 comments on commit 06929f7

Please sign in to comment.