mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-08-15 04:50:08 +00:00
update embed code
This commit is contained in:
@@ -124,10 +124,10 @@ struct ChannelWebAccessView: View {
|
||||
if let pg = groupInfo.groupProfile.publicGroup,
|
||||
!relayDomains.isEmpty {
|
||||
"""
|
||||
<div data-simplex-group-preview
|
||||
<div data-simplex-channel-preview
|
||||
data-relay-domains="\(relayDomains.joined(separator: ","))"
|
||||
data-public-group-id="\(pg.publicGroupId)"
|
||||
data-group-link="\(pg.groupLink)"></div>
|
||||
data-channel-id="\(pg.publicGroupId)"
|
||||
data-channel-link="\(pg.groupLink)"></div>
|
||||
<script src="https://simplex.chat/js/channel-preview.js"></script>
|
||||
"""
|
||||
} else {
|
||||
|
||||
+3
-3
@@ -175,9 +175,9 @@ private fun embedCode(groupRelays: List<GroupRelay>, groupInfo: GroupInfo): Stri
|
||||
val relayDomains = groupRelays.mapNotNull { it.relayCap.webDomain }
|
||||
if (relayDomains.isEmpty()) return null
|
||||
val domains = relayDomains.joinToString(",")
|
||||
return """<div data-simplex-group-preview
|
||||
return """<div data-simplex-channel-preview
|
||||
data-relay-domains="$domains"
|
||||
data-public-group-id="${pg.publicGroupId}"
|
||||
data-group-link="${pg.groupLink}"></div>
|
||||
data-channel-id="${pg.publicGroupId}"
|
||||
data-channel-link="${pg.groupLink}"></div>
|
||||
<script src="https://simplex.chat/js/channel-preview.js"></script>"""
|
||||
}
|
||||
|
||||
@@ -11,10 +11,10 @@
|
||||
</head>
|
||||
<body>
|
||||
<div
|
||||
data-simplex-group-preview
|
||||
data-relay-urls="https://relay1.example.com/preview"
|
||||
data-public-group-id="YOUR_PUBLIC_GROUP_ID"
|
||||
data-group-link="simplex:/g#YOUR_GROUP_LINK"
|
||||
data-simplex-channel-preview
|
||||
data-relay-domains="relay1.example.com"
|
||||
data-channel-id="YOUR_CHANNEL_ID"
|
||||
data-channel-link="simplex:/g#YOUR_CHANNEL_LINK"
|
||||
></div>
|
||||
<script src="https://simplex.chat/js/channel-preview.js"></script>
|
||||
</body>
|
||||
|
||||
@@ -433,11 +433,11 @@ const FORWARD_ICON_SVG = `<svg width="14" height="14" viewBox="0 -960 960 960" f
|
||||
|
||||
function initChannelPreview(container) {
|
||||
const relayDomains = (container.dataset.relayDomains || '').split(',').map(u => u.trim()).filter(Boolean);
|
||||
const groupId = container.dataset.publicGroupId || '';
|
||||
const groupLink = container.dataset.groupLink || '';
|
||||
const channelId = container.dataset.channelId || '';
|
||||
const channelLink = container.dataset.channelLink || '';
|
||||
|
||||
if (!relayDomains.length || !groupId) {
|
||||
container.innerHTML = '<p class="simplex-preview-empty">Missing configuration: data-relay-domains and data-public-group-id required.</p>';
|
||||
if (!relayDomains.length || !channelId) {
|
||||
container.innerHTML = '<p class="simplex-preview-empty">Missing configuration: data-relay-domains and data-channel-id required.</p>';
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -445,12 +445,12 @@ function initChannelPreview(container) {
|
||||
container.classList.add('simplex-preview-container');
|
||||
container.innerHTML = '<p class="simplex-preview-empty">Loading channel...</p>';
|
||||
|
||||
fetchPreview(relayDomains, groupId).then(data => {
|
||||
fetchPreview(relayDomains, channelId).then(data => {
|
||||
if (!data) {
|
||||
container.innerHTML = '<p class="simplex-preview-empty">Failed to load channel preview.</p>';
|
||||
return;
|
||||
}
|
||||
render(container, data, groupLink);
|
||||
render(container, data, channelLink);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -463,10 +463,10 @@ function injectStyles() {
|
||||
document.head.appendChild(style);
|
||||
}
|
||||
|
||||
async function fetchPreview(relayDomains, groupId) {
|
||||
async function fetchPreview(relayDomains, channelId) {
|
||||
for (const domain of relayDomains) {
|
||||
try {
|
||||
const url = `https://${domain}/channel/${groupId}.json`;
|
||||
const url = `https://${domain}/channel/${channelId}.json`;
|
||||
const resp = await fetch(url);
|
||||
if (!resp.ok) continue;
|
||||
return await resp.json();
|
||||
@@ -477,7 +477,7 @@ async function fetchPreview(relayDomains, groupId) {
|
||||
return null;
|
||||
}
|
||||
|
||||
function render(container, data, groupLink) {
|
||||
function render(container, data, channelLink) {
|
||||
const { channel, members, messages } = data;
|
||||
const membersMap = {};
|
||||
for (const m of members) {
|
||||
@@ -485,7 +485,7 @@ function render(container, data, groupLink) {
|
||||
}
|
||||
|
||||
container.innerHTML = '';
|
||||
const header = renderHeader(channel, groupLink, members.length);
|
||||
const header = renderHeader(channel, channelLink, members.length);
|
||||
container.appendChild(header);
|
||||
|
||||
const messagesDiv = document.createElement('div');
|
||||
@@ -497,7 +497,7 @@ function render(container, data, groupLink) {
|
||||
setupSecretToggles(container);
|
||||
}
|
||||
|
||||
function renderHeader(channel, groupLink, subscriberCount) {
|
||||
function renderHeader(channel, channelLink, subscriberCount) {
|
||||
const header = document.createElement('div');
|
||||
header.className = 'simplex-preview-header';
|
||||
|
||||
@@ -525,14 +525,14 @@ function renderHeader(channel, groupLink, subscriberCount) {
|
||||
|
||||
header.appendChild(info);
|
||||
|
||||
if (groupLink) {
|
||||
if (channelLink) {
|
||||
const btn = document.createElement('a');
|
||||
btn.className = 'simplex-preview-join-btn';
|
||||
btn.textContent = 'Join';
|
||||
try {
|
||||
btn.href = platformSimplexUri(groupLink);
|
||||
btn.href = platformSimplexUri(channelLink);
|
||||
} catch(e) {
|
||||
btn.href = groupLink;
|
||||
btn.href = channelLink;
|
||||
}
|
||||
btn.target = '_blank';
|
||||
header.appendChild(btn);
|
||||
@@ -942,6 +942,6 @@ function formatFileSize(bytes) {
|
||||
return (bytes / (1024 * 1024)).toFixed(1) + ' MB';
|
||||
}
|
||||
|
||||
document.querySelectorAll('[data-simplex-group-preview]').forEach(initChannelPreview);
|
||||
document.querySelectorAll('[data-simplex-channel-preview]').forEach(initChannelPreview);
|
||||
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user