Skip to content

Commit 2750132

Browse files
authored
Merge pull request #71 from vivek-nexus/v3.2.4
v3.2.4
2 parents 3a3bc06 + 3e14fa2 commit 2750132

9 files changed

Lines changed: 45 additions & 34 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Simple Google Meet transcripts. Private and open source.
33

44
![marquee-large](/assets/marquee-large.png)
55

6-
Extension status: 🟢 OPERATIONAL (v3.2.3)
6+
Extension status: 🟢 OPERATIONAL (v3.2.4)
77

88
<br />
99
<br />

extension-unpacked.zip

210 Bytes
Binary file not shown.

extension/background.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -655,8 +655,8 @@ function registerContentScripts(showNotification = true) {
655655
chrome.notifications.create({
656656
type: "basic",
657657
iconUrl: "icon.png",
658-
title: "Zoom and Teams transcripts enabled!",
659-
message: "Please join Zoom/Teams meetings on the browser. Refresh any existing Zoom/Teams pages."
658+
title: "Enabled! Join Zoom/Teams meetings on the browser",
659+
message: "Refresh any existing Zoom/Teams pages"
660660
})
661661
}
662662
})

extension/content.js

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ function transcriptMutationCallback(mutationsList) {
308308
if (people.length > 1) {
309309
// Get the last person
310310
let person = people[people.length - 2]
311-
if (person.childNodes.length < 2) {
311+
if (person && (person.childNodes.length < 2)) {
312312
person = people[people.length - 3]
313313
}
314314
// CRITICAL DOM DEPENDENCY
@@ -539,28 +539,27 @@ function pulseStatus() {
539539

540540
// Grabs updated meeting title, if available
541541
function updateMeetingTitle() {
542-
try {
543-
waitForElement(".u6vdEc").then(() => {
544-
// Pick up meeting name after a delay, since Google meet updates meeting name after a delay
545-
setTimeout(() => {
546-
// NON CRITICAL DOM DEPENDENCY
547-
const meetingTitleElement = document.querySelector(".u6vdEc")
548-
if (meetingTitleElement?.textContent) {
549-
meetingTitle = meetingTitleElement.textContent
550-
overWriteChromeStorage(["meetingTitle"], false)
551-
} else {
552-
throw new Error("Meeting title element not found in DOM")
553-
}
554-
}, 5000)
555-
})
556-
} catch (err) {
557-
console.error(err)
542+
waitForElement(".u6vdEc").then((element) => {
543+
const meetingTitleElement = /** @type {HTMLDivElement} */ (element)
544+
meetingTitleElement?.setAttribute("contenteditable", "true")
545+
546+
meetingTitleElement?.addEventListener("input", handleMeetingTitleElementChange)
547+
548+
// Pick up meeting name after a delay, since Google meet updates meeting name after a delay
549+
setTimeout(() => {
550+
handleMeetingTitleElementChange()
551+
meetingTitleElement.title = "Edit meeting title for TranscripTonic"
552+
meetingTitleElement.style.cssText = `text-decoration: underline white; text-underline-offset: 4px;`
553+
if (location.pathname === `/${meetingTitleElement.innerText}`) {
554+
showNotification({ status: 200, message: "<b>Give this meeting a title?</b><br/>Edit the underlined text in the bottom left corner" })
555+
}
556+
}, 5000)
558557

559-
if (!hasMeetingEnded) {
560-
logError("007", err)
558+
function handleMeetingTitleElementChange() {
559+
meetingTitle = meetingTitleElement.innerText
560+
overWriteChromeStorage(["meetingTitle"], false)
561561
}
562-
}
563-
562+
})
564563
}
565564

566565
// Returns all elements of the specified selector type and specified textContent. Return array contains the actual element as well as all the parents.
@@ -702,7 +701,7 @@ function checkExtensionStatus() {
702701
// Disable extension if version is below the min version
703702
if (!meetsMinVersion(chrome.runtime.getManifest().version, minVersion)) {
704703
extensionStatusJSON.status = 400
705-
extensionStatusJSON.message = `<strong>TranscripTonic is not running</strong> <br /> Please update to v${minVersion} by following <a href="https://github.com/vivek-nexus/transcriptonic/wiki/Manually-update-TranscripTonic" target="_blank">these instructions</a>`
704+
extensionStatusJSON.message = `<strong>TranscripTonic is not running</strong> <br /> Please force update to v${minVersion} by following <a href="https://github.com/vivek-nexus/transcriptonic/wiki/Manually-update-TranscripTonic" target="_blank">these instructions</a>`
706705
}
707706
else {
708707
// Update status based on response

extension/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"manifest_version": 3,
33
"name": "TranscripTonic",
4-
"version": "3.2.3",
4+
"version": "3.2.4",
55
"description": "Simple Google Meet transcripts. Private and open source.",
66
"action": {
77
"default_icon": "icon.png",

extension/meetings.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,9 @@ <h2 style="margin-bottom: 0;">Integrate TranscripTonic with your favourite tools
418418
</div>
419419

420420
<div class="card">
421+
<div class="webhook-header" style="display: flex; gap: 0.5rem; align-items: center;">
422+
<p class="card-heading">Webhook help</p>
423+
</div>
421424
<p class="card-heading">Webhook integration guides</p>
422425
<div class="integration-card">
423426
<a class="integration-guide"

extension/meetings.js

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
/// <reference path="../types/chrome.d.ts" />
33
/// <reference path="../types/index.js" />
44

5+
let isMeetingsTableExpanded = false
6+
57
document.addEventListener("DOMContentLoaded", function () {
68
const webhookUrlForm = document.querySelector("#webhook-url-form")
79
const webhookUrlInput = document.querySelector("#webhook-url")
@@ -85,21 +87,27 @@ document.addEventListener("DOMContentLoaded", function () {
8587

8688
// Handle URL input changes
8789
webhookUrlInput.addEventListener("input", function () {
88-
saveButton.disabled = !webhookUrlInput.value || !webhookUrlInput.checkValidity()
90+
saveButton.disabled = !webhookUrlInput.checkValidity()
8991
})
9092

9193
// Save webhook URL, auto-post setting, and webhook body type
9294
webhookUrlForm.addEventListener("submit", function (e) {
9395
e.preventDefault()
9496
const webhookUrl = webhookUrlInput.value
95-
if (webhookUrl && webhookUrlInput.checkValidity()) {
97+
if (webhookUrl === "") {
98+
// Save webhook URL and settings
99+
chrome.storage.sync.set({
100+
webhookUrl: webhookUrl
101+
}, function () {
102+
alert("Webhook URL saved!")
103+
})
104+
}
105+
else if (webhookUrl && webhookUrlInput.checkValidity()) {
96106
// Request runtime permission for the webhook URL
97107
requestWebhookAndNotificationPermission(webhookUrl).then(() => {
98108
// Save webhook URL and settings
99109
chrome.storage.sync.set({
100-
webhookUrl: webhookUrl,
101-
autoPostWebhookAfterMeeting: autoPostCheckbox.checked,
102-
webhookBodyType: advancedWebhookBodyRadio.checked ? "advanced" : "simple"
110+
webhookUrl: webhookUrl
103111
}, function () {
104112
alert("Webhook URL saved!")
105113
})
@@ -136,6 +144,7 @@ document.addEventListener("DOMContentLoaded", function () {
136144
const meetingsTableContainer = document.querySelector("#meetings-table-container")
137145
meetingsTableContainer?.classList.remove("fade-mask")
138146
showAllButton.setAttribute("style", "display:none;")
147+
isMeetingsTableExpanded = true
139148
})
140149
}
141150
})
@@ -229,7 +238,7 @@ function loadMeetings() {
229238
meetingsTable.appendChild(row)
230239

231240
const meetingsTableContainer = document.querySelector("#meetings-table-container")
232-
if (meetingsTableContainer && meetingsTableContainer.clientHeight > 320) {
241+
if (!isMeetingsTableExpanded && meetingsTableContainer && (meetingsTableContainer.clientHeight > 320)) {
233242
meetingsTableContainer?.classList.add("fade-mask")
234243
document.querySelector("#show-all")?.setAttribute("style", "display: block")
235244
}

extension/popup.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ <h1>TranscripTonic</h1>
187187

188188
<div>
189189
<div class="beta" style="justify-content: flex-start;">
190-
<p style="margin: 0;"><b>Zoom and Teams transcripts are in beta:</b></p>
190+
<p style="margin: 0; color: orange"><b>Zoom and Teams transcripts are in beta:</b></p>
191191
<!-- <span class="footer-separator"></span> -->
192192
<button id="enable-beta">Enable</button>
193193
<span>or&nbsp;&nbsp;</span>

types/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@
132132
// | **004** | "Call end button element not found in DOM" |
133133
// | **005** | "Transcript mutation failed to process" |
134134
// | **006** | "Chat messages mutation failed to process" |
135-
// | **007** | "Meeting title element not found in DOM" |
135+
// | **007** | "Meeting title element not found in DOM" (currently not in use) |
136136
// | **008** | "Failed to fetch extension status" |
137137
// | **016** | "Recovery timed out" |
138138

0 commit comments

Comments
 (0)