From bd947b8285568f9a71736389c0427cb7e4eaadcf Mon Sep 17 00:00:00 2001 From: "Agustinus Theodorus (aider)" Date: Tue, 19 Nov 2024 20:51:30 +0700 Subject: [PATCH 1/5] docs: Enhance README with comprehensive technical documentation and installation guide --- README.md | 68 +++++++++++++++++++++++++++++++++++++++++++++++-- build/readme.md | 45 ++++++++++++++++++++++++++------ 2 files changed, 103 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b753116..182ace5 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,67 @@ -# myriad-importer-extension +# Myriad Importer Extension -This extension is LIVE at https://myriad.social/extension / https://chrome.google.com/webstore/detail/myriad-extension/caafifipbilmonkndcpppfehkhappcci +A browser extension that enables seamless content importing and cross-posting from various social media platforms to Myriad.social. + +## Official Links +This extension is LIVE at: +- https://myriad.social/extension +- https://chrome.google.com/webstore/detail/myriad-extension/caafifipbilmonkndcpppfehkhappcci + +## Technical Overview + +The extension provides several key functionalities: + +### Authentication +- Uses a magic link authentication system via email +- Authenticates through the Myriad.social API (`api.myriad.social/authentication`) +- Stores authentication tokens and username locally for persistent sessions + +### Content Import Support +1. **Twitter Posts** + - Automatically detects Twitter post URLs (`twitter.com/{username}/status/{id}`) + - Shows an "i" badge when the post is already imported to Myriad + - Imports posts with their content to Myriad + +2. **Reddit Posts** + - Detects Reddit post URLs (`reddit.com/r/{subreddit}/comments/{id}`) + - Similar badge notification system as Twitter + - Enables direct importing of Reddit content + +3. **YouTube Integration** + - Automatically converts YouTube URLs to embedded iframes + - Supports custom captions + - Full-width responsive video player integration + +4. **Twitch Integration** + - Converts Twitch channel URLs to embedded players + - Automatically configures proper parent domain settings + - Supports channel streaming embeds + +### Text Selection Features +- Supports selecting and formatting text from any webpage +- Truncates selections to 1000 characters +- Removes empty lines automatically +- Formats text with italic styling + +### UI Components +- Clean, responsive popup interface +- Purple gradient buttons with hover effects +- User feedback system for actions +- Conditional display of import/post options based on current URL +- Embedded post preview iframe for existing content + +## Technical Components + +- `background.js`: Monitors tab URLs and manages badge notifications +- `contentScript.js`: Handles text selection and formatting +- `popup.js`: Controls the extension's UI, authentication, and API interactions +- Custom styling with Mulish font family +- Secure API integration with Myriad.social endpoints + +## API Integration +- Base URL: `https://api.myriad.social` +- Endpoints used: + - `/authentication/otp/email` - Magic link generation + - `/authentication/login/otp` - Authentication + - `/user/posts/import` - Content importing + - `/user/posts` - Post creation and retrieval diff --git a/build/readme.md b/build/readme.md index b33d36a..712ab20 100644 --- a/build/readme.md +++ b/build/readme.md @@ -1,8 +1,37 @@ -- Download everything here as a zip file by going to https://myriad.social/ext -- Unzip the file. You will see a *.zip* file and a *.crx* file -- Open Google Chrome / Microsoft Edge / Brave / Chromium. -- Go to chrome://extensions using the URL bar. -- Toggle "Developer Mode" (usually top right) to *on*. -- Drag the *.crx* file onto the page. If this fails, unzip the *.zip* file and press "Load Unpacked" button on the top left and choose the unzipped folder. -- Find the Myriad logo under the puzzle piece icon, and pin it. -- Use the extension by clicking on the Myriad logo and following the instructions to log in and start importing. +# Installation Guide for Myriad Extension + +## Quick Start +1. Download everything as a zip file from https://myriad.social/ext +2. Unzip the file. You will see a *.zip* file and a *.crx* file +3. Open Google Chrome / Microsoft Edge / Brave / Chromium +4. Go to chrome://extensions using the URL bar +5. Toggle "Developer Mode" (usually top right) to *on* +6. Drag the *.crx* file onto the page +7. Find the Myriad logo under the puzzle piece icon, and pin it +8. Click the Myriad logo and follow the login instructions to start importing + +## Detailed Installation Methods + +### Method 1: Direct Installation (Recommended) +1. Use the `.crx` file from the downloaded package +2. Navigate to `chrome://extensions` in your browser +3. Enable "Developer Mode" using the toggle in the top right +4. Drag and drop the `.crx` file onto the extensions page + +### Method 2: Manual Installation (If Method 1 fails) +1. Unzip the `.zip` file to a local directory +2. Navigate to `chrome://extensions` in your browser +3. Enable "Developer Mode" using the toggle in the top right +4. Click "Load Unpacked" button on the top left +5. Select the unzipped folder + +## Supported Browsers +- Google Chrome +- Microsoft Edge +- Brave +- Any Chromium-based browser + +## Troubleshooting +- If the `.crx` installation fails, try the manual installation method +- Ensure Developer Mode is enabled before installation +- Check that all files are properly extracted when using manual installation From 1076f081b4b7aa0ffa033d37f22a34344af6a3d5 Mon Sep 17 00:00:00 2001 From: Agustinus Theodorus Date: Wed, 20 Nov 2024 12:30:05 +0700 Subject: [PATCH 2/5] feat: new myriad importer extension version --- .gitignore | 2 + background.js | 89 ++++--- contentScript.js | 30 +-- manifest.json | 6 +- popup.html | 166 +++++++++++-- popup.js | 596 +++++++++++++++++++++++++++++++++++++++++------ popup.old | 112 ++++++++- 7 files changed, 841 insertions(+), 160 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d5ac763 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.aider* +.env diff --git a/background.js b/background.js index 07690fd..b770e39 100644 --- a/background.js +++ b/background.js @@ -1,32 +1,57 @@ -chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => { - if (!changeInfo.url) return; - - const url = changeInfo.url; - if (!url.includes("twitter.com") && !url.includes("reddit.com")) return; - - const match = url.includes("twitter.com") - ? url.match(/https:\/\/twitter\.com\/[^\/]+\/status\/(\d+)/) - : url.match(/https:\/\/www\.reddit\.com\/r\/[^\/]+\/comments\/(\w+)/); - - if (!match) return; - - const postId = match[1]; - const storageKey = `myriadUrl_${tabId}`; - - fetch('https://api.myriad.social/user/posts?pageLimit=200') - .then(response => response.json()) - .then(data => { - const post = data.data.find(post => post.originPostId === postId); - - if (!post) { - chrome.action.setBadgeText({text: '', tabId: tabId}); - return; - } - - const myriadUrl = `https://app.myriad.social/post/${post.id}`; - chrome.storage.local.set({[storageKey]: myriadUrl}); - chrome.action.setBadgeBackgroundColor({color: [255, 0, 0, 255]}); - chrome.action.setBadgeText({text: 'i', tabId: tabId}); - }) - .catch(error => console.error('Error:', error)); -}); + + + +function fetchAndStoreExperiences() { + // Retrieve access token from local storage + var base_url='https://api.myriad.social' + chrome.storage.local.get(['accessToken', 'username'], function(items) { + var accessToken = items.accessToken; + var username = items.username; + + var headers = { + 'accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Bearer ' + accessToken, + }; + + var url = base_url + "/user/experiences"; + var page = 1; + var pagelimit = 10; + var filter = '{"where":{"deletedAt":{"$exists":false}},"order":"createdAt DESC","include":["user",{"relation":"experience","scope":{"include":[{"relation":"user","scope":{"include":[{"relation":"accountSetting"}]}}]}}]}'; + var experiences = {}; // To store the Experience Names and IDs + + function fetchPage() { + var params = new URLSearchParams({ "pageNumber": page, "pageLimit": pagelimit, "filter": filter }); + fetch(url + "?" + params.toString(), { headers: headers }) + .then(response => response.json()) + .then(data => { + if (!data || !data.data) { + console.error('Unexpected data structure:', data); + return; // Exit early if data or data.data is undefined + } + var filtered_experiences = data.data.filter(exp => exp.experience.user.username === username); + filtered_experiences.forEach(exp => { + var experience_id = exp.experience.id; + var experience_name = exp.experience.name; + experiences[experience_name] = experience_id; + }); + + if (data.meta.additionalData.totalOwnedExperience > Object.keys(experiences).length) { + page += 1; + fetchPage(); // Fetch the next page if there are more experiences + } else { + // Store the experiences in local storage + chrome.storage.local.set({ "experiences": JSON.stringify(experiences) }, function() { + console.log("Experiences have been saved to local storage."); + //populateExperiences(experiences); // Populate the experiences in the optgroup + }); + } + }) + .catch(error => console.error('Error:', error)); + } + + fetchPage(); // Start fetching the first page + }); +} + + diff --git a/contentScript.js b/contentScript.js index ea448db..bf6d2fc 100644 --- a/contentScript.js +++ b/contentScript.js @@ -1,24 +1,6 @@ - -chrome.runtime.onMessage.addListener( - function(request, sender, sendResponse) { - if (request.message === "get_selected_text") { - var selectedText = window.getSelection().toString(); - - // Truncate it to the first 1000 characters - selectedText = selectedText.substr(0, 1000); - - // Break it into lines - var textBlocks = selectedText.split('\n').filter(function (txt) { - // Remove empty lines - return txt.trim().length > 0; - }); - - // Convert each line into a link - textBlocks = textBlocks.map(function (txt) { - return `

${txt}

`; - }); - - sendResponse({data: textBlocks}); - } - } -); +chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) { + if (message.action === "grabText") { + const textContent = document.body.innerText; + chrome.runtime.sendMessage({ action: "textGrabbed", text: textContent }); + } +}); diff --git a/manifest.json b/manifest.json index 02ccd51..be1c3a6 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "Myriad Extension", - "version": "1.0", + "version": "1.022", "description": "Import and Post to Myriad", "permissions": [ "activeTab", @@ -9,8 +9,10 @@ "*://*.twitter.com/*", "*://*.reddit.com/*", "*://*.twitch.tv/*", - "*://*.youtube.com/*" + "*://*.youtube.com/*", + "*://*.facebook.com/*" ], + "action": { "default_popup": "popup.html", "default_icon": { diff --git a/popup.html b/popup.html index 9245abc..bd3d161 100644 --- a/popup.html +++ b/popup.html @@ -5,14 +5,16 @@ - +
+ + +
+
+ +

Myriad Social

+ +
Log-in by inputing your e-mail address, and copy the link you will receive into the 'magic link' field. @@ -119,21 +225,41 @@

Myriad Social

_
-
- - -
+
+
+ + +
+
+ + + + + + - +
+ + + +
+
- +
@@ -141,6 +267,10 @@

Myriad Social

+ diff --git a/popup.js b/popup.js index 1e83e0b..4d7c5bb 100644 --- a/popup.js +++ b/popup.js @@ -4,6 +4,213 @@ var loginData = { }; + + +function checkSelectedExperience() { + // Get the select element by its ID + var selectElement = document.getElementById('experience_selector'); + + // Check if an option is selected + if (selectElement.selectedIndex !== -1) { + // Get the selected option's value (experience name) + var selectedExperienceName = selectElement.options[selectElement.selectedIndex].textContent; + + // Check if an experience is selected + if (selectedExperienceName) { + // Retrieve experiences from local storage + var experiences = localStorage.getItem("experiences"); + if (experiences) { + experiences = JSON.parse(experiences); + + // Get the corresponding experience ID + var experienceId = experiences[selectedExperienceName]; + + // Save the experience ID to local storage + localStorage.setItem("default_experience_id", experienceId); + + +// Create the hyperlink to the selected experience +var experienceLink = "https://app.myriad.social/?type=experience&id=" + experienceId; + +// Display the hyperlink using your function +displayUserFeedback('Click Here to go to the selected Experience.'); + + } + } + } +} + +function addToDefaultExperience(postId) { + var defaultExperienceId = localStorage.getItem("default_experience_id"); + var accessToken = localStorage.getItem("accessToken"); + + var apiUrl = "https://api.myriad.social/experiences/post"; + var headers = { + 'accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Bearer ' + accessToken, + }; + + var experienceData = { + "experienceIds": [defaultExperienceId], + "postId": postId + }; + + fetch(apiUrl, { + method: 'POST', + headers: headers, + body: JSON.stringify(experienceData) + }) + .then(response => { + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + return response.json(); + }) + .then(data => { + console.log(data); + displayUserFeedback('The post has been successfully added to the default Timeline.'); + }) + .catch((error) => { + console.error('Error:', error); + displayUserFeedback('There was an error adding the post to the default Timeline. Please try again.', false); + }); +} + + +// Function to populate experiences and show the experiences div +function populateExperiences(experiences, defaultExperienceId) { + var selectElement = document.getElementById('experience_selector'); + var optgroup = selectElement.querySelector('optgroup'); + + // Clear any existing options + optgroup.innerHTML = ''; + + // Add the experiences + for (var experience_name in experiences) { + var option = document.createElement('option'); + option.value = experiences[experience_name]; + option.textContent = experience_name; + optgroup.appendChild(option); + + // Select the default experience if it matches + if (experiences[experience_name] === defaultExperienceId) { + option.selected = true; + } + } + + // Show the experiences div + document.getElementById('experiences').style.display = 'block'; +} + +// Function to load experiences from local storage and populate the optgroup +function loadExperiencesFromLocalStorage() { + var experiences = localStorage.getItem("experiences"); + var defaultExperienceId = localStorage.getItem("default_experience_id"); + if (experiences) { + experiences = JSON.parse(experiences); + populateExperiences(experiences, defaultExperienceId); + } +} + + +function fetchAndStoreExperiences() { + var storedExperiences = localStorage.getItem("experiences"); + if (storedExperiences) { + return; // Exit early if experiences are already populated + } + // Show spinner and message + document.getElementById('spinner').style.display = 'block'; + displayUserFeedback("The extension is loading your Myriad data. Please do not close."); + + // Retrieve access token from local storage + var accessToken = localStorage.getItem("accessToken"); + var username = localStorage.getItem("username"); + var headers = { + 'accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Bearer ' + accessToken, + }; + + var url = base_url + "/user/experiences"; + var page = 1; + var pagelimit = 10; + var filter = '{"where":{"deletedAt":{"$exists":false}},"order":"createdAt DESC","include":["user",{"relation":"experience","scope":{"include":[{"relation":"user","scope":{"include":[{"relation":"accountSetting"}]}}]}}]}'; + var experiences = {}; // To store the Experience Names and IDs + + function fetchPage() { + var params = new URLSearchParams({ "pageNumber": page, "pageLimit": pagelimit, "filter": filter }); + fetch(url + "?" + params.toString(), { headers: headers }) + .then(response => response.json()) + .then(data => { + var filtered_experiences = data.data.filter(exp => exp.experience.user.username === username); + filtered_experiences.forEach(exp => { + var experience_id = exp.experience.id; + var experience_name = exp.experience.name; + experiences[experience_name] = experience_id; + }); + + if (data.meta.additionalData.totalOwnedExperience > Object.keys(experiences).length) { + page += 1; + fetchPage(); // Fetch the next page if there are more experiences + } else { + finalizeFetching(); + } + }) + .catch(error => console.error('Error:', error)); + } + + function finalizeFetching() { + // Check if there are no experiences + if (Object.keys(experiences).length === 0) { + createDefaultExperience(); // Create a new default experience + } + + // Store the experiences in local storage + localStorage.setItem("experiences", JSON.stringify(experiences)); + + // Set the default experience to be the first one if not already set + if (!localStorage.getItem("default_experience_id")) { + var firstExperienceId = Object.values(experiences)[0]; + localStorage.setItem("default_experience_id", firstExperienceId); + } + + displayUserFeedback("Myriad Timelines loaded."); + document.getElementById('spinner').style.display = 'none'; + populateExperiences(experiences); // Populate the experiences in the optgroup + } + + fetchPage(); // Start fetching the first page +} + +function createDefaultExperience() { + var accessToken = localStorage.getItem("accessToken"); + var headers = { + 'accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Bearer ' + accessToken, + }; + var url = base_url + "/user/experiences"; + + // We'll name the experience "Default" as you requested + var experience_name = "Default"; + var data = JSON.stringify({ "name": experience_name }); + + fetch(url, { + method: 'POST', // We'll use POST method to create the experience + headers: headers, + body: data + }) + .then(response => response.json()) + .then(responseData => { + // Here you can handle the response data if needed + console.log("Default experience created:", responseData); + }) + .catch(error => console.error('Error:', error)); +} + + + function dataURLToBlob(dataUrl) { const arr = dataUrl.split(','); const mime = arr[0].match(/:(.*?);/)[1]; @@ -16,7 +223,6 @@ function dataURLToBlob(dataUrl) { return new Blob([u8arr], { type: mime }); } - function displayUserFeedback(messageText, isSuccess = true) { // Create a new message element let messageElement = document.createElement('div'); @@ -24,8 +230,8 @@ function displayUserFeedback(messageText, isSuccess = true) { // Add classes to the message messageElement.className = 'message ' + (isSuccess ? 'success' : 'error'); - // Set the text content of the message - messageElement.textContent = messageText; + // Set the HTML content of the message + messageElement.innerHTML = messageText; // Use innerHTML instead of textContent // Append the message to the body document.body.appendChild(messageElement); @@ -33,12 +239,13 @@ function displayUserFeedback(messageText, isSuccess = true) { // After 6 seconds, remove the message setTimeout(() => { document.body.removeChild(messageElement); - }, 6000); + }, 5000); } + base_url='https://api.myriad.social'; function createMyriadPost(title, textBlocks, platform = 'myriad', visibility = 'public') { - + document.getElementById('spinner').style.display = 'block'; const apiEndpoint = `${base_url}/user/posts`; fetch(`${base_url}/users/${loginData.username}`, { @@ -61,11 +268,13 @@ function createMyriadPost(title, textBlocks, platform = 'myriad', visibility = ' let text = textBlocks.join('\n'); + var defaultExperienceId = localStorage.getItem("default_experience_id"); + let post_data = { "rawText": text, "text": text, "status": "published", - "selectedTimelineIds": [], + "selectedTimelineIds": [defaultExperienceId], "createdBy": createdBy, "createdAt": createdAt, "platform": platform, @@ -85,17 +294,92 @@ function createMyriadPost(title, textBlocks, platform = 'myriad', visibility = ' if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } + return response.json(); }) .then(data => { console.log('Post created successfully!'); displayUserFeedback('Post created successfully!', true); + + // Hide the spinner + document.getElementById('spinner').style.display = 'none'; }) .catch((error) => { console.error('Error:', error); + + // Hide the spinner + document.getElementById('spinner').style.display = 'none'; }); } + + + +function generateFacebookEmbed(url) { + // Remove subdomains like "m." or "web." if present + url = url.replace(/https:\/\/(m\.|web\.)?facebook\.com/, 'https://www.facebook.com'); + + let src; + if (url.includes('/videos/')) { + // It's a video + const videoId = url.split('/videos/')[1].split('/')[0]; + const pageName = url.split('facebook.com/')[1].split('/')[0]; + src = `https://www.facebook.com/plugins/video.php?height=476&href=https%3A%2F%2Fwww.facebook.com%2F${pageName}%2Fvideos%2F${videoId}%2F&show_text=false&width=100%&t=0`; + } else { + // It's a post + src = `https://www.facebook.com/plugins/post.php?href=${encodeURIComponent(url)}&show_text=true&width=100%`; + } + + return ``; +} + + + +function embedFacebookPost() { + // Get the current tab URL + chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) { + const currentTabURL = tabs[0].url; + + // Check if the URL is a Facebook post or video + const facebookPattern = /^https:\/\/(www\.|m\.|web\.)?facebook\.com\/.+/; + if (!facebookPattern.test(currentTabURL)) { + //displayUserFeedback("Please go to a Facebook post or video."); + return; + } + + // Construct the embed HTML using the generateFacebookEmbed function + const embedHTML = generateFacebookEmbed(currentTabURL); + + // Title for the Myriad post (you can customize this) + const title = "Facebook Embed"; + + // Call the createMyriadPost function to post the embedded Facebook content + createMyriadPost(title, [embedHTML], 'myriad'); + }); +} + +// Listen for messages from the content script +chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) { + if (message.action === "grabText") { + const originalText = message.text; + + // Construct the embed HTML using the generateFacebookEmbed function + const embedHTML = generateFacebookEmbed(sender.tab.url, originalText); + + // Title for the Myriad post + const title = "Facebook Embed"; + + // Call the createMyriadPost function to post the embedded Facebook content + createMyriadPost(title, [embedHTML], 'myriad'); + } +}); + +// ... Rest of the code as before ... + + + + + //Alex check below // When the popup is opened, get the active tab URL. chrome.tabs.query({active: true, lastFocusedWindow: true}, function(tabs) { @@ -158,8 +442,80 @@ chrome.tabs.query({active: true, lastFocusedWindow: true}, function(tabs) { } }); +// This function changes the visibility based on the last clicked button +function updateVisibility() { + var lastClicked = localStorage.getItem('lastClicked'); + + if(lastClicked === 'email_login') { + document.getElementById('selector').style.display = 'none'; + document.getElementById('emailfield').style.display = 'block'; + } else { + document.getElementById('selector').style.display = 'block'; + document.getElementById('emailfield').style.display = 'none'; + } +} + document.addEventListener('DOMContentLoaded', function () { + + +document.getElementById('refresh_button').addEventListener('click', function() { + // Remove the experiences data from local storage + localStorage.removeItem("experiences"); + + // Call fetchAndStoreExperiences to repopulate the data + fetchAndStoreExperiences(); + + +}); + +// Get the logout button and confirmation div +var logoutButton = document.getElementById('logout_button'); +var logoutConfirmation = document.getElementById('logout_confirmation'); + +// When the logout button is clicked +logoutButton.addEventListener('click', function() { + // Hide the logout button and show the confirmation div + logoutButton.style.display = 'none'; + logoutConfirmation.style.display = 'inline'; +}); + +// When the "yes" link is clicked +document.getElementById('logout_yes').addEventListener('click', function(e) { + e.preventDefault(); // Prevent the default link behavior + // Remove ALL data from local storage + localStorage.clear(); + + // Hide the confirmation div and show the logout button + logoutConfirmation.style.display = 'none'; + logoutButton.style.display = 'inline'; + + // You can add some user feedback here if you like + displayUserFeedback('Logged out successfully! See you next time!'); + checkLogin(); +}); + +// When the "no" link is clicked +document.getElementById('logout_no').addEventListener('click', function(e) { + e.preventDefault(); // Prevent the default link behavior + // Hide the confirmation div and show the logout button + logoutConfirmation.style.display = 'none'; + logoutButton.style.display = 'inline'; +}); + + +document.getElementById('logo').addEventListener('click', function () { + window.open('https://app.myriad.social', '_blank'); +}); + + document.getElementById('create_account').addEventListener('click', function () { + window.open('https://app.myriad.social/login?instance=https%3A%2F%2Fapi.myriad.social', '_blank'); +}); + +document.getElementById('connect_email').addEventListener('click', function () { + window.open('https://app.myriad.social/settings?section=email&instance=https%3A%2F%2Fapi.myriad.social', '_blank'); +}); + var buttons = document.getElementsByTagName('button'); for (var i = 0; i < buttons.length; i++) { buttons[i].addEventListener('click', function () { @@ -172,6 +528,7 @@ document.addEventListener('DOMContentLoaded', function () { var postContent = document.getElementById('post_content'); writePostButton.addEventListener('click', function () { + writePostButton.style.display='none'; postContent.style.display = 'block'; submitPostButton.style.display = 'inline-block'; }); @@ -184,24 +541,70 @@ document.addEventListener('DOMContentLoaded', function () { createMyriadPost(title, textBlocks); postContent.value = ''; + writePostButton.style.display='block'; postContent.style.display = 'none'; this.style.display = 'none'; } }); - document.getElementById('send_magic_link').addEventListener('click', function () { - var email = document.getElementById('email').value; - sendMagicLink(email); - }); +document.getElementById('send_magic_link').addEventListener('click', function () { + var email = document.getElementById('email').value; + localStorage.setItem('lastEmail', email); + sendMagicLink(email); + document.getElementById('magiclink').style.display = 'block'; // Show the magic link field + + // Check if email is Gmail or Yahoo, then provide link to email provider + var link = null; + if (email.endsWith("@gmail.com")) { + link = "https://mail.google.com"; + } else if (email.endsWith("@yahoo.com")) { + link = "https://mail.yahoo.com"; + } + + if (link) { + var emailProviderLink = document.getElementById('email_provider_link'); + if (emailProviderLink) { + emailProviderLink.href = link; // Update existing link if it already exists + } else { + // Create new link if it doesn't exist yet + emailProviderLink = document.createElement('a'); + emailProviderLink.id = 'email_provider_link'; + emailProviderLink.href = link; + emailProviderLink.target = "_blank"; + emailProviderLink.textContent = "Go to your email provider"; + + document.getElementById('emailfield').appendChild(emailProviderLink); // Append the link to the emailfield div + } + } +}); + - document.getElementById('submit_magic_link').addEventListener('click', function () { - var magicLink = document.getElementById('magic_link').value; - authenticate(magicLink); +document.getElementById('submit_magic_link').addEventListener('click', function () { + var magicLink = document.getElementById('magic_link').value; + authenticate(magicLink); +}); + +window.onload = function() { + var lastEmail = localStorage.getItem('lastEmail'); + if(lastEmail) { + document.getElementById('email').value = lastEmail; + document.getElementById('send_magic_link').textContent = 'Resend Magic Link'; + document.getElementById('magiclink').style.display = 'block'; // Show the magic link field if an email is stored + } + updateVisibility(); + + // This event listener is here + document.getElementById('email_login').addEventListener('click', function () { + localStorage.setItem('lastClicked', 'email_login'); + updateVisibility(); }); - +} + document.getElementById('import_post').addEventListener('click', function () { + var writePostButton = document.getElementById('write_post_button'); + writePostButton.style.display='block'; chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) { var currentUrl = tabs[0].url; if (currentUrl.includes('twitter.com') || currentUrl.includes('reddit.com')) { @@ -239,11 +642,20 @@ document.getElementById('import_post').addEventListener('click', function () { postContent.value = ''; postContent.style.display = 'none'; this.style.display = 'none'; - } + } else if (currentUrl.includes('facebook.com/')) { + embedFacebookPost() + } }); }); +// Get the select element by its ID +var selectElement = document.getElementById('experience_selector'); + +// Add an event listener that listens for the "change" event +selectElement.addEventListener('change', checkSelectedExperience); + +checkSelectedExperience(); }); @@ -263,12 +675,17 @@ importbuttonElement.innerText = importbuttonElement.textContent = 'new text'; contextElement.innerText = "The current page is natively importable to Myriad! "; document.getElementById('write_post_button').style.display = 'none'; importbuttonElement.innerText = importbuttonElement.textContent = 'Import Post'; - } else if (currentUrl.includes('youtube.com') || currentUrl.includes('twitch.tv')) { + } else if (currentUrl.includes('youtube.com') || currentUrl.includes('twitch.tv') || currentUrl.includes('facebook.com')) { contextElement.innerText = "The current page can be embedded into a Myriad post! "; - writepostbuttonElement.innerText=writepostbuttonElement.textContent = 'Add Caption'; - importbuttonElement.innerText = importbuttonElement.textContent = 'Embed Video'; + // If the URL is not from Facebook, show the "Add Caption" button + if (!currentUrl.includes('facebook.com')) { + writepostbuttonElement.innerText = writepostbuttonElement.textContent = 'Add Caption'; } else { - contextElement.innerText = "Myriad supports imports from Twitter, Reddit, YouTube, and Twitch! You can still write a post below."; + writepostbuttonElement.style.display = 'none'; + } + importbuttonElement.innerText = importbuttonElement.textContent = 'Embed'; + } else { + contextElement.innerText = "Myriad supports inserting posts from Twitter, Reddit, YouTube, Twitch, and Facebook!\nYou can also write a Myriad text post below."; importbuttonElement.innerText = importbuttonElement.textContent = 'Archive Content'; document.getElementById('import_post').style.display = 'none'; } @@ -282,19 +699,23 @@ var username = localStorage.getItem("username"); if (accessToken && username) { loginData.accessToken = accessToken; loginData.username = username; - + fetchAndStoreExperiences(); + loadExperiencesFromLocalStorage(); var preloginElement = document.getElementById('prelogin'); if (preloginElement) { preloginElement.innerText = "Logged in as: " + username; } - + document.getElementById('logout_button').style.display = 'block'; document.getElementById('email').style.display = 'none'; document.getElementById('magic_link').style.display = 'none'; document.getElementById('send_magic_link').style.display = 'none'; document.getElementById('submit_magic_link').style.display = 'none'; - + document.getElementById('selector').style.display = 'none'; document.getElementById('write_post_button').style.display = 'inline-block'; document.getElementById('import_post').style.display = 'inline-block'; + + document.getElementById('contextof').style.display = 'block'; + } else { document.getElementById('email').style.display = 'block'; document.getElementById('magic_link').style.display = 'block'; @@ -302,6 +723,9 @@ if (accessToken && username) { document.getElementById('submit_magic_link').style.display = 'block'; document.getElementById('prelogin').style.display = 'block'; + document.getElementById('contextof').style.display = 'none'; + + document.getElementById('write_post_button').style.display = 'none'; document.getElementById('import_post').style.display = 'none'; } @@ -311,6 +735,7 @@ if (accessToken && username) { function sendMagicLink(email) { + document.getElementById('spinner').style.display = 'block'; var apiUrl = "https://api.myriad.social/authentication/otp/email"; fetch(apiUrl, { @@ -337,10 +762,13 @@ function sendMagicLink(email) { console.error('Error:', error); displayUserFeedback('There was an error sending the magic link. Please try again.', false); }); + document.getElementById('spinner').style.display = 'none'; } function authenticate(magicLink) { + // Show the spinner + document.getElementById('spinner').style.display = 'block'; var callbackUrl = "https://app.myriad.social/login"; var token = magicLink.replace(callbackUrl+"?token=", ""); @@ -354,70 +782,86 @@ function authenticate(magicLink) { body: JSON.stringify({ "token": token }) - }).then(response => response.json()) - .then(data => { - var accessToken = data.token.accessToken; - var username = data.user.username; - - // store accessToken and username in local storage - localStorage.setItem("accessToken", accessToken); - localStorage.setItem("username", username); - displayUserFeedback('Access Token and Username are set in local storage'); - checkLogin(); - document.getElementById('import_post').style.visibility = 'visible'; - var preloginElement = document.getElementById('prelogin'); - if (preloginElement) { - preloginElement.innerText = "Logged in as: " + username; - } - }) - .catch((error) => { - console.error('Error:', error); - displayUserFeedback('There was an error during authentication. Please try again.', false); - }); + }) + .then(response => response.json()) + .then(data => { + var accessToken = data.token.accessToken; + var username = data.user.username; + + // store accessToken and username in local storage + localStorage.setItem("accessToken", accessToken); + localStorage.setItem("username", username); + displayUserFeedback("You're authenticated!"); + checkLogin(); + document.getElementById('import_post').style.visibility = 'visible'; + var preloginElement = document.getElementById('prelogin'); + if (preloginElement) { + preloginElement.innerText = "Logged in as: " + username; + } + + // Fetch and store experiences after successful authentication + + //chrome.runtime.sendMessage({ action: 'fetchAndStoreExperiences' }); + }) + .catch((error) => { + console.error('Error:', error); + displayUserFeedback('There was an error during authentication. Please try again.', false); + }); + document.getElementById('spinner').style.display = 'none'; } -function importTwitterPost(twitterUrl, selectedTimelineIds = []) { +function importTwitterPost(twitterUrl) { + // Show the spinner + document.getElementById('spinner').style.display = 'block'; + // retrieve access token and username from local storage var at = localStorage.getItem("accessToken"); -var un = localStorage.getItem("username"); + var un = localStorage.getItem("username"); + var defaultExperienceId = localStorage.getItem("default_experience_id"); + + var apiUrl = "https://api.myriad.social/user/posts/import"; + var headers = { + 'accept': 'application/json', + 'Content-Type': 'application/json', + 'Authorization': 'Bearer ' + at, + }; - - var apiUrl = "https://api.myriad.social/user/posts/import"; - var headers = { - 'accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': 'Bearer ' + at, - }; + var data = { + "url": twitterUrl, + "importer": un, + "selectedTimelineIds": defaultExperienceId , + }; - var data = { - "url": twitterUrl, - "importer": un, - "selectedTimelineIds": selectedTimelineIds, - }; + fetch(apiUrl, { + method: 'POST', + headers: headers, + body: JSON.stringify(data) + }) + .then(response => { + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + return response.json(); + }) + .then(data => { -fetch(apiUrl, { - method: 'POST', - headers: headers, - body: JSON.stringify(data) -}) -.then(response => { - if (!response.ok) { - throw new Error(`HTTP error! status: ${response.status}`); - } - return response.json(); -}) -.then(data => { - console.log(data); - displayUserFeedback('The post has been successfully imported.'); -}) -.catch((error) => { - console.error('Error:', error); - displayUserFeedback('There was an error during the import. Please try again.', false); -}); + console.log(data); + displayUserFeedback('The post has been successfully imported.'); + + // Hide the spinner + document.getElementById('spinner').style.display = 'none'; + }) + .catch((error) => { + console.error('Error:', error); + displayUserFeedback('There was an error during the import. Please try again.', false); + + // Hide the spinner + document.getElementById('spinner').style.display = 'none'; + }); +}; - }; document.addEventListener('DOMContentLoaded', checkLogin); diff --git a/popup.old b/popup.old index 364e182..0713c0f 100644 --- a/popup.old +++ b/popup.old @@ -1,22 +1,118 @@ + + -

Myriad Social Importer

- - - - + +

Myriad Social Extension

+
+
+ Log-in by inputing your e-mail address, and copy the link you will receive into the 'magic link' field. + Don't forget to check your spam box! +
+
+ _ +
+
+ + +
+ +
+ +
+ + + +
- +
+ +
- From 51cbe5eba53c1a4d3d7823aaa9525d8da1fe99d3 Mon Sep 17 00:00:00 2001 From: "Agustinus Theodorus (aider)" Date: Wed, 20 Nov 2024 12:31:53 +0700 Subject: [PATCH 3/5] docs: Update README with new extension features and integrations --- README.md | 45 +++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 182ace5..b52ebc0 100644 --- a/README.md +++ b/README.md @@ -14,22 +14,23 @@ The extension provides several key functionalities: ### Authentication - Uses a magic link authentication system via email - Authenticates through the Myriad.social API (`api.myriad.social/authentication`) -- Stores authentication tokens and username locally for persistent sessions +- Stores authentication tokens and username in local storage for persistent sessions +- Includes logout functionality with confirmation dialog ### Content Import Support 1. **Twitter Posts** - - Automatically detects Twitter post URLs (`twitter.com/{username}/status/{id}`) - - Shows an "i" badge when the post is already imported to Myriad - - Imports posts with their content to Myriad + - Automatically detects Twitter post URLs + - Imports posts directly to selected Myriad Experience + - Shows preview of imported posts in embedded iframe 2. **Reddit Posts** - - Detects Reddit post URLs (`reddit.com/r/{subreddit}/comments/{id}`) - - Similar badge notification system as Twitter - - Enables direct importing of Reddit content + - Detects Reddit post URLs + - Direct importing to selected Myriad Experience + - Shows preview of imported posts in embedded iframe 3. **YouTube Integration** - Automatically converts YouTube URLs to embedded iframes - - Supports custom captions + - Supports optional captions - Full-width responsive video player integration 4. **Twitch Integration** @@ -37,31 +38,39 @@ The extension provides several key functionalities: - Automatically configures proper parent domain settings - Supports channel streaming embeds -### Text Selection Features -- Supports selecting and formatting text from any webpage -- Truncates selections to 1000 characters -- Removes empty lines automatically -- Formats text with italic styling +5. **Facebook Integration** + - Supports embedding of Facebook posts and videos + - Automatic conversion of mobile/web URLs to proper embed format + - Responsive iframe implementation + +### Experience Management +- Automatic creation of default Experience if none exists +- Experience selector with refresh capability +- Stores selected Experience as default in local storage +- Direct links to selected Experience page ### UI Components - Clean, responsive popup interface - Purple gradient buttons with hover effects -- User feedback system for actions +- Loading spinner for async operations +- User feedback system with timed messages - Conditional display of import/post options based on current URL - Embedded post preview iframe for existing content +- Logout confirmation dialog ## Technical Components -- `background.js`: Monitors tab URLs and manages badge notifications -- `contentScript.js`: Handles text selection and formatting +- `background.js`: Manages Experience data and background tasks +- `contentScript.js`: Handles text grabbing from pages - `popup.js`: Controls the extension's UI, authentication, and API interactions - Custom styling with Mulish font family - Secure API integration with Myriad.social endpoints ## API Integration - Base URL: `https://api.myriad.social` -- Endpoints used: +- Key endpoints: - `/authentication/otp/email` - Magic link generation - `/authentication/login/otp` - Authentication - `/user/posts/import` - Content importing - - `/user/posts` - Post creation and retrieval + - `/user/experiences` - Experience management + - `/experiences/post` - Adding posts to experiences From 88b3abec8bd05e1fd1518e28ce78e7e34556fe5a Mon Sep 17 00:00:00 2001 From: "Agustinus Theodorus (aider)" Date: Wed, 20 Nov 2024 12:33:26 +0700 Subject: [PATCH 4/5] docs: Add build instructions and update gitignore --- .gitignore | 27 +++++++++++++++++++++++++++ README.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/.gitignore b/.gitignore index d5ac763..7e6502c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,29 @@ +# Build artifacts +build/ +*.crx +*.pem +*.zip + +# IDE and editor files +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# OS generated files +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db + +# Logs +*.log +npm-debug.log* + +# Development .aider* .env diff --git a/README.md b/README.md index b52ebc0..cb58aad 100644 --- a/README.md +++ b/README.md @@ -74,3 +74,48 @@ The extension provides several key functionalities: - `/user/posts/import` - Content importing - `/user/experiences` - Experience management - `/experiences/post` - Adding posts to experiences + +## Building and Packaging + +### Development Build +To test the extension locally: +1. Open Chrome and navigate to `chrome://extensions/` +2. Enable "Developer mode" (toggle in top right) +3. Click "Load unpacked" +4. Select your extension directory + +### Production Build +To package the extension for the Chrome Web Store: + +1. Clean the build directory: +```bash +rm -rf build/ +mkdir -p build +``` + +2. Create the distribution package: +```bash +zip -r build/extension_store.zip \ + manifest.json \ + popup.html \ + popup.js \ + background.js \ + contentScript.js \ + myriadlogo16.png \ + myriadlogo48.png \ + myriadlogo128.png +``` + +3. Create the Chrome extension package (optional): +- Open Chrome and go to `chrome://extensions/` +- Enable "Developer mode" +- Click "Pack extension" +- Select your extension directory +- Click "Pack Extension" +- Move the generated files: +```bash +mv extension.crx build/extension_store.crx +mv extension.pem build/extension.pem +``` + +The `build/extension_store.zip` file can be submitted to the Chrome Web Store for publication. From cb2db2ca6f6b81435295c06c66603c41be084226 Mon Sep 17 00:00:00 2001 From: Agustinus Theodorus Date: Wed, 20 Nov 2024 13:02:33 +0700 Subject: [PATCH 5/5] feat: add new build for the extensions --- .gitignore | 3 +++ build/extension_store.crx | Bin 21202 -> 147177 bytes build/extension_store.zip | Bin 27439 -> 50919 bytes 3 files changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 7e6502c..e222a9d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,9 @@ build/ *.crx *.pem *.zip +!extension_store.crx +!extension_store.zip +!extension_installer.zip # IDE and editor files .vscode/ diff --git a/build/extension_store.crx b/build/extension_store.crx index 6cfd8d5b5a81e740900767a9ec0b6589a8ba78f9..47e10ac41d67a756dd648ff89f479ea3ec0a191d 100644 GIT binary patch delta 106172 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%0DZ=Q_ekWSTH$_kgxB+VoQ-25+*W8xts$ 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 delta 13 VcmaF)m*dh>#tFuo*$UhtWAF3MIeVXb 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 SEE4ziP5;XG7q|a$^?v{zbtBCH delta 914 zcmaFf%e?*?yTu&}11A_%b&%_UclcV>mY_1SE!3@-UH_SBP7&8L{NCiS~N5D(C zUP~qh25X4k$rtupY~C)S!KlQ}vAAb_vl=4<14tU7F}LkARO9B4qANk_MEVXU!~)g* zMN#J!1y{F5d<6?oU0O`(iX;{Wh6UWn<`wqC)uqWygajf`jfr&N?0O$>$GpF^TH}^}7HC6b>meH|m1aivt5) z8z|Ba6j^7;FnNNB^yFiQ^nfB?fg-}DAQ4BXnFnmdCs!TjV$QUMs9SVcUlrsnP#7Tl gS{B7yvPle+s}k+R0=!w-K)&S%!ag9YI|al80D^zk=>Px#