mirror of
				https://github.com/TitanEmbeds/Titan.git
				synced 2025-11-04 15:57:02 +01:00 
			
		
		
		
	Realtime updating channel list
This commit is contained in:
		@@ -1,7 +1,7 @@
 | 
			
		||||
from titanembeds.utils import socketio, guild_accepts_visitors, get_client_ipaddr
 | 
			
		||||
from titanembeds.userbookkeeping import check_user_in_guild, get_guild_channels, update_user_status
 | 
			
		||||
from titanembeds.database import db, GuildMembers
 | 
			
		||||
from flask_socketio import Namespace, emit, disconnect, join_room
 | 
			
		||||
from flask_socketio import Namespace, emit, disconnect, join_room, leave_room
 | 
			
		||||
import functools
 | 
			
		||||
from flask import request, session
 | 
			
		||||
import time
 | 
			
		||||
@@ -63,4 +63,19 @@ class Gateway(Namespace):
 | 
			
		||||
                disconnect()
 | 
			
		||||
        else:
 | 
			
		||||
            if not guild_accepts_visitors(guild_id):
 | 
			
		||||
                disconnect()
 | 
			
		||||
                disconnect()
 | 
			
		||||
    
 | 
			
		||||
    def on_channel_list(self, data):
 | 
			
		||||
        guild_id = data["guild_id"]
 | 
			
		||||
        visitor_mode = data["visitor_mode"]
 | 
			
		||||
        channels = None
 | 
			
		||||
        if visitor_mode or session.get("unauthenticated", True):
 | 
			
		||||
            channels = get_guild_channels(guild_id, True)
 | 
			
		||||
        else:
 | 
			
		||||
            channels = get_guild_channels(guild_id)
 | 
			
		||||
        for chan in channels:
 | 
			
		||||
            if chan["read"]:
 | 
			
		||||
                join_room("CHANNEL_"+chan["channel"]["id"])
 | 
			
		||||
            else:
 | 
			
		||||
                leave_room("CHANNEL_"+chan["channel"]["id"])
 | 
			
		||||
        emit("channel_list", channels)
 | 
			
		||||
@@ -27,6 +27,7 @@
 | 
			
		||||
    var authenticated_users_list = []; // List of all authenticated users
 | 
			
		||||
    var unauthenticated_users_list = []; // List of all guest users
 | 
			
		||||
    var discord_users_list = []; // List of all discord users that are probably online
 | 
			
		||||
    var guild_channels_list = []; // guild channels, but as a list of them
 | 
			
		||||
 | 
			
		||||
    function element_in_view(element, fullyInView) {
 | 
			
		||||
        var pageTop = $(window).scrollTop();
 | 
			
		||||
@@ -387,6 +388,7 @@
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function fill_channels(channels) {
 | 
			
		||||
        guild_channels_list = channels;
 | 
			
		||||
        var template = $('#mustache_channellistings').html();
 | 
			
		||||
        Mustache.parse(template);
 | 
			
		||||
        $("#channels-list").empty();
 | 
			
		||||
@@ -1045,6 +1047,7 @@
 | 
			
		||||
        });
 | 
			
		||||
        
 | 
			
		||||
        socket.on("GUILD_MEMBER_UPDATE", function (usr) {
 | 
			
		||||
            update_socket_channels();
 | 
			
		||||
            for (var i = 0; i < discord_users_list.length; i++) {
 | 
			
		||||
                if (usr.id == discord_users_list[i].id) {
 | 
			
		||||
                    discord_users_list.splice(i, 1);
 | 
			
		||||
@@ -1072,12 +1075,55 @@
 | 
			
		||||
        socket.on("GUILD_EMOJIS_UPDATE", function (emo) {
 | 
			
		||||
            emoji_store = emo;
 | 
			
		||||
        });
 | 
			
		||||
        
 | 
			
		||||
        socket.on("CHANNEL_DELETE", function (chan) {
 | 
			
		||||
            for (var i = 0; i < guild_channels_list.length; i++) {
 | 
			
		||||
                var thatchannel = guild_channels_list[i];
 | 
			
		||||
                if (thatchannel.channel.id == chan.id) {
 | 
			
		||||
                    guild_channels_list.splice(i, 1);
 | 
			
		||||
                    fill_channels(guild_channels_list);
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
        
 | 
			
		||||
        socket.on("CHANNEL_UPDATE", function (chan) {
 | 
			
		||||
            update_socket_channels();
 | 
			
		||||
        });
 | 
			
		||||
        
 | 
			
		||||
        socket.on("CHANNEL_CREATE", function (chan) {
 | 
			
		||||
            update_socket_channels();
 | 
			
		||||
        });
 | 
			
		||||
        
 | 
			
		||||
        socket.on("GUILD_ROLE_UPDATE", function (chan) {
 | 
			
		||||
            update_socket_channels();
 | 
			
		||||
        });
 | 
			
		||||
        
 | 
			
		||||
        socket.on("GUILD_ROLE_DELETE", function (chan) {
 | 
			
		||||
            update_socket_channels();
 | 
			
		||||
        });
 | 
			
		||||
        
 | 
			
		||||
        socket.on("channel_list", function (chans) {
 | 
			
		||||
            fill_channels(chans);
 | 
			
		||||
            for (var i = 0; i < chans.length; i++) {
 | 
			
		||||
                var thischan = chans[i];
 | 
			
		||||
                if (thischan.channel.id == selected_channel) {
 | 
			
		||||
                    $("#channeltopic").text(thischan.channel.topic);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    function send_socket_heartbeat() {
 | 
			
		||||
    function update_socket_channels() {
 | 
			
		||||
        if (!socket) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        socket.emit("heartbeat", {"guild_id": guild_id, "visitor_mode": visitor_mode});
 | 
			
		||||
        socket.emit("channel_list", {"guild_id": guild_id, "visitor_mode": visitor_mode});
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    function send_socket_heartbeat() {
 | 
			
		||||
        if (socket) {
 | 
			
		||||
            socket.emit("heartbeat", {"guild_id": guild_id, "visitor_mode": visitor_mode});
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
})();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user