MCPcopy Create free account
hub / github.com/error311/FileRise / mountShareCopilot

Function mountShareCopilot

public/js/sharedFolderView.js:424–627  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

422 }
423
424 async function mountShareCopilot() {
425 if (!token || !shareAiEnabled) return;
426 const publicAiConfig = await loadPublicAiConfig();
427 if (!publicAiConfig.enabled) return;
428
429 const card = createShareCopilotCard();
430 const launcherSubtitleEl = card.querySelector('.fr-share-ai-launcher-subtitle');
431 const openBtn = card.querySelector('.fr-share-ai-open');
432 const backdropEl = card.querySelector('.fr-share-ai-backdrop');
433 const closeBtn = card.querySelector('.fr-share-ai-close');
434 const subtitleEl = card.querySelector('.fr-share-copilot-subtitle');
435 const suggestionsEl = card.querySelector('.fr-share-copilot-suggestions');
436 const logEl = card.querySelector('.fr-share-copilot-log');
437 const formEl = card.querySelector('.fr-share-copilot-form');
438 const inputEl = card.querySelector('.fr-share-copilot-input');
439 const submitBtn = formEl ? formEl.querySelector('button[type="submit"]') : null;
440 const metaEl = card.querySelector('.fr-share-copilot-meta');
441
442 const mountTarget = uploadForm && uploadForm.closest('.fr-share-card')
443 ? uploadForm.closest('.fr-share-card')
444 : document.querySelector('.fr-share-toolbar') || document.querySelector('.fr-share-card-wide');
445 if (mountTarget && mountTarget.parentNode) {
446 if (mountTarget.nextSibling) {
447 mountTarget.parentNode.insertBefore(card, mountTarget.nextSibling);
448 } else {
449 mountTarget.parentNode.appendChild(card);
450 }
451 }
452
453 const defaultSubtitle = hideListing || shareMode === 'drop'
454 ? 'Ask about uploads, access, or what this share is for.'
455 : 'Ask AI to explain this share, search visible text files, summarize them, or compare two files.';
456 const launcherSubtitle = hideListing || shareMode === 'drop'
457 ? 'Upload-only and hidden-listing shares work best for access and upload questions.'
458 : 'Useful for quick lookups, “which file mentions X?” questions, and summaries without manual clicking.';
459 if (launcherSubtitleEl) launcherSubtitleEl.textContent = launcherSubtitle;
460 if (subtitleEl) subtitleEl.textContent = defaultSubtitle;
461
462 const defaultSuggestions = hideListing || shareMode === 'drop'
463 ? ['What is this share for?', 'How do I upload files here?']
464 : ['Summarize the visible files here', 'Which file mentions backup?', 'Compare test.md and notes.md'];
465
466 function openModal() {
467 if (!backdropEl) return;
468 backdropEl.hidden = false;
469 document.body.classList.add('fr-share-ai-modal-open');
470 if (inputEl) {
471 window.setTimeout(function () {
472 inputEl.focus();
473 }, 0);
474 }
475 }
476
477 function closeModal() {
478 if (!backdropEl) return;
479 backdropEl.hidden = true;
480 document.body.classList.remove('fr-share-ai-modal-open');
481 }

Callers 1

Calls 7

createShareCopilotCardFunction · 0.85
loadPublicAiConfigFunction · 0.70
setSuggestionsFunction · 0.70
appendMessageFunction · 0.70
openModalFunction · 0.70
closeModalFunction · 0.70
sendMessageFunction · 0.70

Tested by

no test coverage detected