|
464 | 464 | if (!hash) return; |
465 | 465 | var params = new URLSearchParams(hash); |
466 | 466 | var spaceSlug = params.get('space'); |
| 467 | + var compactId = params.get('s'); |
467 | 468 |
|
468 | 469 | // --- Space hub: #space=<slug> --- |
469 | | - if (spaceSlug) { |
| 470 | + if (spaceSlug && !compactId) { |
470 | 471 | try { |
471 | 472 | M.markdownPreview.innerHTML = '<div style="padding: 40px; text-align: center; opacity: 0.6;"><i class="bi bi-collection"></i> Loading Space...</div>'; |
472 | 473 | M.setViewMode('preview'); |
|
894 | 895 | if (hint) hint.style.display = ''; |
895 | 896 | // Render previously shared versions |
896 | 897 | renderSharedVersions(); |
| 898 | + // Populate "Add to Space" picker in options modal |
| 899 | + if (M.populateShareSpacePicker) M.populateShareSpacePicker(); |
897 | 900 | } |
898 | 901 |
|
899 | 902 | /** Render the "Previously Shared" list in the share options modal */ |
|
1032 | 1035 | if (shareResult.id) { |
1033 | 1036 | saveSharedVersion(shareResult.id, shareResult.url, selectedShareView, isSecureShareMode ? 'secure' : 'quick'); |
1034 | 1037 | } |
| 1038 | + // Add to selected space (if any) |
| 1039 | + var selectedSpaceSlug = ''; |
| 1040 | + var spaceSelect = document.getElementById('share-space-select'); |
| 1041 | + if (spaceSelect && spaceSelect.value) { |
| 1042 | + selectedSpaceSlug = spaceSelect.value; |
| 1043 | + try { |
| 1044 | + var title = 'Untitled'; |
| 1045 | + var content = M.markdownEditor.value; |
| 1046 | + var headingMatch = content.match(/^#+\s+(.+)/m); |
| 1047 | + if (headingMatch) title = headingMatch[1].trim().substring(0, 60); |
| 1048 | + await M.addItemToSpace(selectedSpaceSlug, shareResult.id, title); |
| 1049 | + } catch (spaceErr) { |
| 1050 | + console.warn('Failed to add to space:', spaceErr); |
| 1051 | + } |
| 1052 | + } |
1035 | 1053 | closeShareOptionsModal(); |
1036 | | - showShareResult(shareResult.url, isSecureShareMode, shareResult.isForm, shareResult.rkString); |
| 1054 | + showShareResult(shareResult.url, isSecureShareMode, shareResult.isForm, shareResult.rkString, selectedSpaceSlug); |
1037 | 1055 | } catch (error) { |
1038 | 1056 | console.error('Share failed:', error); |
1039 | 1057 | // Show custom name errors in the custom name error div |
|
1054 | 1072 | var shareResultModal = document.getElementById('share-result-modal'); |
1055 | 1073 | var lastShareRk = ''; |
1056 | 1074 | var lastShareRespondentUrl = ''; |
1057 | | - function showShareResult(url, isSecure, isForm, rkString) { |
1058 | | - // For form docs, append rk to create the creator link |
| 1075 | + function showShareResult(url, isSecure, isForm, rkString, spaceSlug) { |
| 1076 | + // Build the display URL |
1059 | 1077 | var creatorUrl = url; |
1060 | 1078 | if (isForm && rkString) { |
1061 | 1079 | creatorUrl = url + '&rk=' + rkString; |
1062 | 1080 | } |
| 1081 | + // Rewrite the hash to include the space before the document ID |
| 1082 | + if (spaceSlug) { |
| 1083 | + creatorUrl = creatorUrl.replace('#s=', '#space=' + spaceSlug + '&s='); |
| 1084 | + } |
1063 | 1085 | document.getElementById('share-link-input').value = creatorUrl; |
1064 | 1086 |
|
1065 | 1087 | var desc = document.getElementById('share-result-desc'); |
|
1098 | 1120 | } |
1099 | 1121 |
|
1100 | 1122 | shareResultModal.classList.add('active'); |
1101 | | - |
1102 | | - // Populate "Add to Space" picker if user has spaces |
1103 | | - if (M.populateShareSpacePicker) M.populateShareSpacePicker(); |
1104 | 1123 | } |
1105 | 1124 | M.closeShareResultModal = function () { shareResultModal.classList.remove('active'); }; |
1106 | 1125 | document.getElementById('share-result-close').addEventListener('click', M.closeShareResultModal); |
|
1204 | 1223 |
|
1205 | 1224 | // Track when the share result modal opens (for time-based bot detection) |
1206 | 1225 | var _origShowShareResult = showShareResult; |
1207 | | - showShareResult = function (url, isSecure, isForm, rkString) { |
1208 | | - _origShowShareResult(url, isSecure, isForm, rkString); |
| 1226 | + showShareResult = function (url, isSecure, isForm, rkString, spaceSlug) { |
| 1227 | + _origShowShareResult(url, isSecure, isForm, rkString, spaceSlug); |
1209 | 1228 | emailModalOpenTime = Date.now(); |
1210 | 1229 | }; |
1211 | 1230 | if (emailSendBtn) emailSendBtn.addEventListener('click', async function () { |
|
0 commit comments