Feat: Adding GUILDS! #12

Merged
snxraven merged 21 commits from guilds into main 2024-07-07 23:01:33 -04:00
Showing only changes of commit 181d011b8d - Show all commits

43
app.js
View File

@ -179,6 +179,11 @@ async function initialize() {
console.log('Event switchRoom with roomTopic:', roomTopic); console.log('Event switchRoom with roomTopic:', roomTopic);
switchRoom(guildTopic, roomTopic); switchRoom(guildTopic, roomTopic);
}); });
document.addEventListener('joinGuildRequest', (event) => {
const { guildTopic } = event.detail;
joinGuildRequest(guildTopic);
});
} catch (error) { } catch (error) {
console.error('Error during initialization:', error); console.error('Error during initialization:', error);
} }
@ -195,6 +200,7 @@ function setupEventListeners() {
const attachFileButton = document.getElementById('attach-file'); const attachFileButton = document.getElementById('attach-file');
const fileInput = document.getElementById('file-input'); const fileInput = document.getElementById('file-input');
const talkButton = document.getElementById('talk-btn'); const talkButton = document.getElementById('talk-btn');
const joinGuildBtn = document.getElementById('join-guild');
if (registerForm) { if (registerForm) {
registerForm.addEventListener('submit', registerUser); registerForm.addEventListener('submit', registerUser);
@ -234,6 +240,14 @@ function setupEventListeners() {
if (talkButton) { if (talkButton) {
setupTalkButton(); setupTalkButton();
} }
if (joinGuildBtn) {
joinGuildBtn.addEventListener('click', () => {
const guildTopic = document.getElementById('join-guild-topic').value.trim();
if (guildTopic) {
joinGuildRequest(guildTopic);
}
});
}
// Add event listeners only for room items // Add event listeners only for room items
document.querySelectorAll('.room-item').forEach(item => { document.querySelectorAll('.room-item').forEach(item => {
@ -1207,4 +1221,33 @@ function handleFileInput(event) {
} }
} }
async function joinGuildRequest(guildTopic) {
const guildTopicBuffer = b4a.from(guildTopic, 'hex');
if (!activeRooms.some(room => room.topic === guildTopic)) {
try {
const swarm = new Hyperswarm();
const discovery = swarm.join(guildTopicBuffer, { client: true, server: true });
await discovery.flushed();
swarm.on('connection', (connection, info) => {
handleConnection(connection, info);
// Request guild information from peers
const guildRequestMessage = JSON.stringify({
type: 'guildRequest',
guildTopic
});
connection.write(guildRequestMessage);
});
activeRooms.push({ topic: guildTopic, swarm, discovery });
console.log('Joined guild topic:', guildTopic); // Debugging log
updatePeerCount();
} catch (error) {
console.error('Error joining swarm for guild topic:', guildTopic, error);
}
}
}
initialize(); initialize();