Skip to content
This repository has been archived by the owner on Aug 18, 2023. It is now read-only.

Commit

Permalink
repaste hashtags when composer gets re-enabled
Browse files Browse the repository at this point in the history
Fixes #560
  • Loading branch information
eramdam committed Apr 6, 2021
1 parent eaf6c31 commit 24825d5
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 2 deletions.
11 changes: 9 additions & 2 deletions src/features/keepTweetedHashtags.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {isHTMLElement} from '../helpers/domHelpers';
import {onComposerShown} from '../helpers/tweetdeckHelpers';
import {onComposerDisabledStateChange, onComposerShown} from '../helpers/tweetdeckHelpers';
import {makeBTDModule} from '../types/btdCommonTypes';

export const keepTweetedHashtagsInComposer = makeBTDModule(({jq, settings}) => {
Expand All @@ -10,7 +10,6 @@ export const keepTweetedHashtagsInComposer = makeBTDModule(({jq, settings}) => {

function pasteHashtags() {
const tweetTextArea = document.querySelector<HTMLTextAreaElement>('textarea.js-compose-text');
console.log('savedHashtags', savedHashtags);

if (!tweetTextArea) {
return;
Expand Down Expand Up @@ -54,5 +53,13 @@ export const keepTweetedHashtagsInComposer = makeBTDModule(({jq, settings}) => {

pasteHashtags();
});

onComposerDisabledStateChange((isDisabled) => {
if (isDisabled) {
return;
}

pasteHashtags();
});
});
});
29 changes: 29 additions & 0 deletions src/helpers/tweetdeckHelpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,35 @@ export function onComposerShown(callback: HandlerOf<boolean>) {
};
}

export function onComposerDisabledStateChange(callback: HandlerOf<boolean>) {
const tweetComposerObserver = new MutationObserver(() => {
const tweetComposer = document.querySelector(
'.drawer[data-drawer="compose"] textarea.js-compose-text'
);
callback(tweetComposer?.getAttribute('disabled') === 'true');
});

onComposerShown((isVisible) => {
if (!isVisible) {
tweetComposerObserver.disconnect();
return;
}

const tweetComposer = document.querySelector(
'.drawer[data-drawer="compose"] textarea.js-compose-text'
);

if (!tweetComposer) {
return;
}

tweetComposerObserver.observe(tweetComposer, {
attributeFilter: ['disabled'],
attributes: true,
});
});
}

// From http://stackoverflow.com/questions/1064089/inserting-a-text-where-cursor-is-using-javascript-jquery
function insertAtCursor(input: HTMLInputElement | HTMLTextAreaElement, value: string) {
if (input.selectionStart || input.selectionStart === 0) {
Expand Down

0 comments on commit 24825d5

Please sign in to comment.