mirror of
				https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
				synced 2025-11-03 20:02:47 +00:00 
			
		
		
		
	strictly use socket.io class based namespaces
This commit is contained in:
		@@ -1,29 +1,32 @@
 | 
			
		||||
nopaque.App = class App {
 | 
			
		||||
  #promises;
 | 
			
		||||
 | 
			
		||||
  constructor() {
 | 
			
		||||
    this.data = {
 | 
			
		||||
      promises: {getUser: {}, subscribeUser: {}},
 | 
			
		||||
      users: {},
 | 
			
		||||
      users: {}
 | 
			
		||||
    };
 | 
			
		||||
    this.sockets = {};
 | 
			
		||||
    this.sockets['/users'] = io(
 | 
			
		||||
      '/users',
 | 
			
		||||
      {
 | 
			
		||||
        transports: ['websocket'],
 | 
			
		||||
        upgrade: false
 | 
			
		||||
      }
 | 
			
		||||
    );
 | 
			
		||||
    // this.socket = io({transports: ['websocket'], upgrade: false});
 | 
			
		||||
    this.socket = this.sockets['/users'];
 | 
			
		||||
    this.socket.on('PATCH', (patch) => {this.onPatch(patch);});
 | 
			
		||||
 | 
			
		||||
    this.#promises = {
 | 
			
		||||
      getUser: {},
 | 
			
		||||
      subscribeUser: {}
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    this.sockets = {
 | 
			
		||||
      users: io('/users', {transports: ['websocket'], upgrade: false})
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    this.sockets.users.on('patch_user', (patch) => {this.onPatch(patch);});
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  getUser(userId) {
 | 
			
		||||
    if (userId in this.data.promises.getUser) {
 | 
			
		||||
      return this.data.promises.getUser[userId];
 | 
			
		||||
    if (userId in this.#promises.getUser) {
 | 
			
		||||
      return this.#promises.getUser[userId];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.data.promises.getUser[userId] = new Promise((resolve, reject) => {
 | 
			
		||||
      this.socket.emit('get_user', userId, (response) => {
 | 
			
		||||
    let socket = this.sockets.users;
 | 
			
		||||
 | 
			
		||||
    this.#promises.getUser[userId] = new Promise((resolve, reject) => {
 | 
			
		||||
      socket.emit('get_user', userId, (response) => {
 | 
			
		||||
        if (response.status === 200) {
 | 
			
		||||
          this.data.users[userId] = response.body;
 | 
			
		||||
          resolve(this.data.users[userId]);
 | 
			
		||||
@@ -33,25 +36,27 @@ nopaque.App = class App {
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    return this.data.promises.getUser[userId];
 | 
			
		||||
    return this.#promises.getUser[userId];
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  subscribeUser(userId) {
 | 
			
		||||
    if (userId in this.data.promises.subscribeUser) {
 | 
			
		||||
      return this.data.promises.subscribeUser[userId];
 | 
			
		||||
    if (userId in this.#promises.subscribeUser) {
 | 
			
		||||
      return this.#promises.subscribeUser[userId];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.data.promises.subscribeUser[userId] = new Promise((resolve, reject) => {
 | 
			
		||||
      this.socket.emit('subscribe_user', userId, (response) => {
 | 
			
		||||
        if (response.status !== 200) {
 | 
			
		||||
    let socket = this.sockets.users;
 | 
			
		||||
 | 
			
		||||
    this.#promises.subscribeUser[userId] = new Promise((resolve, reject) => {
 | 
			
		||||
      socket.emit('subscribe_user', userId, (response) => {
 | 
			
		||||
        if (response.status === 200) {
 | 
			
		||||
          resolve(response);
 | 
			
		||||
        } else {
 | 
			
		||||
          reject(response);
 | 
			
		||||
          return;
 | 
			
		||||
        }
 | 
			
		||||
        resolve(response);
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    return this.data.promises.subscribeUser[userId];
 | 
			
		||||
    return this.#promises.subscribeUser[userId];
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  flash(message, category) {
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ nopaque.resource_displays.ResourceDisplay = class ResourceDisplay {
 | 
			
		||||
    if (this.userId) {
 | 
			
		||||
      app.subscribeUser(this.userId)
 | 
			
		||||
        .then((response) => {
 | 
			
		||||
          app.socket.on('PATCH', (patch) => {
 | 
			
		||||
          app.sockets.users.on('patch_user', (patch) => {
 | 
			
		||||
            if (this.isInitialized) {this.onPatch(patch);}
 | 
			
		||||
          });
 | 
			
		||||
        });
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,7 @@ nopaque.resource_lists.CorpusFileList = class CorpusFileList extends nopaque.res
 | 
			
		||||
    this.hasPermissionManageFiles =  listContainerElement.dataset?.hasPermissionManageFiles == 'true' || false;
 | 
			
		||||
    if (this.userId === undefined || this.corpusId === undefined) {return;}
 | 
			
		||||
    app.subscribeUser(this.userId).then((response) => {
 | 
			
		||||
      app.socket.on('PATCH', (patch) => {
 | 
			
		||||
      app.sockets.users.on('patch_user', (patch) => {
 | 
			
		||||
        if (this.isInitialized) {this.onPatch(patch);}
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
@@ -271,7 +271,7 @@ nopaque.resource_lists.CorpusFileList = class CorpusFileList extends nopaque.res
 | 
			
		||||
        this.selectedItemIds.clear();
 | 
			
		||||
        this.renderingItemSelection();
 | 
			
		||||
        break;
 | 
			
		||||
      }  
 | 
			
		||||
      }
 | 
			
		||||
      default: {
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ nopaque.resource_lists.CorpusFollowerList = class CorpusFollowerList extends nop
 | 
			
		||||
    this.corpusId = listContainerElement.dataset.corpusId;
 | 
			
		||||
    if (this.userId === undefined || this.corpusId === undefined) {return;}
 | 
			
		||||
    app.subscribeUser(this.userId).then((response) => {
 | 
			
		||||
      app.socket.on('PATCH', (patch) => {
 | 
			
		||||
      app.sockets.users.on('patch_user', (patch) => {
 | 
			
		||||
        if (this.isInitialized) {this.onPatch(patch);}
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
@@ -128,7 +128,7 @@ nopaque.resource_lists.CorpusFollowerList = class CorpusFollowerList extends nop
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  onClick(event) {
 | 
			
		||||
    if (event.target.closest('.disable-on-click') !== null) {return;}
 | 
			
		||||
    let listItemElement = event.target.closest('.list-item[data-id]');
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ nopaque.resource_lists.CorpusList = class CorpusList extends nopaque.resource_li
 | 
			
		||||
    this.userId = listContainerElement.dataset.userId;
 | 
			
		||||
    if (this.userId === undefined) {return;}
 | 
			
		||||
    app.subscribeUser(this.userId).then((response) => {
 | 
			
		||||
      app.socket.on('PATCH', (patch) => {
 | 
			
		||||
      app.sockets.users.on('patch_user', (patch) => {
 | 
			
		||||
        if (this.isInitialized) {this.onPatch(patch);}
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
@@ -254,7 +254,7 @@ nopaque.resource_lists.CorpusList = class CorpusList extends nopaque.resource_li
 | 
			
		||||
          let listItem = this.listjs.get('id', selectedItemId)[0].elm;
 | 
			
		||||
          let values = this.listjs.get('id', listItem.dataset.id)[0].values();
 | 
			
		||||
          let itemElement = nopaque.Utils.HTMLToElement(`<li> - ${values.title}</li>`);
 | 
			
		||||
          // if (!values['is-owner']) { 
 | 
			
		||||
          // if (!values['is-owner']) {
 | 
			
		||||
          //   itemUnfollowList.appendChild(itemElement);
 | 
			
		||||
          // } else {
 | 
			
		||||
          itemDeletionList.appendChild(itemElement);
 | 
			
		||||
@@ -286,7 +286,7 @@ nopaque.resource_lists.CorpusList = class CorpusList extends nopaque.resource_li
 | 
			
		||||
          });
 | 
			
		||||
          this.selectedItemIds.clear();
 | 
			
		||||
          this.renderingItemSelection();
 | 
			
		||||
   
 | 
			
		||||
 | 
			
		||||
        });
 | 
			
		||||
        modal.open();
 | 
			
		||||
        break;
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ nopaque.resource_lists.JobList = class JobList extends nopaque.resource_lists.Re
 | 
			
		||||
    this.userId = listContainerElement.dataset.userId;
 | 
			
		||||
    if (this.userId === undefined) {return;}
 | 
			
		||||
    app.subscribeUser(this.userId).then((response) => {
 | 
			
		||||
      app.socket.on('PATCH', (patch) => {
 | 
			
		||||
      app.sockets.users.on('patch_user', (patch) => {
 | 
			
		||||
        if (this.isInitialized) {this.onPatch(patch);}
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ nopaque.resource_lists.JobResultList = class JobResultList extends nopaque.resou
 | 
			
		||||
    this.jobId = listContainerElement.dataset.jobId;
 | 
			
		||||
    if (this.userId === undefined || this.jobId === undefined) {return;}
 | 
			
		||||
    app.subscribeUser(this.userId).then((response) => {
 | 
			
		||||
      app.socket.on('PATCH', (patch) => {
 | 
			
		||||
      app.sockets.users.on('patch_user', (patch) => {
 | 
			
		||||
        if (this.isInitialized) {this.onPatch(patch);}
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ nopaque.resource_lists.SpaCyNLPPipelineModelList = class SpaCyNLPPipelineModelLi
 | 
			
		||||
    this.userId = listContainerElement.dataset.userId;
 | 
			
		||||
    if (this.userId === undefined) {return;}
 | 
			
		||||
    app.subscribeUser(this.userId).then((response) => {
 | 
			
		||||
      app.socket.on('PATCH', (patch) => {
 | 
			
		||||
      app.sockets.users.on('patch_user', (patch) => {
 | 
			
		||||
        if (this.isInitialized) {this.onPatch(patch);}
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ nopaque.resource_lists.TesseractOCRPipelineModelList = class TesseractOCRPipelin
 | 
			
		||||
    this.userId = listContainerElement.dataset.userId;
 | 
			
		||||
    if (this.userId === undefined) {return;}
 | 
			
		||||
    app.subscribeUser(this.userId).then((response) => {
 | 
			
		||||
      app.socket.on('PATCH', (patch) => {
 | 
			
		||||
      app.sockets.users.on('patch_user', (patch) => {
 | 
			
		||||
        if (this.isInitialized) {this.onPatch(patch);}
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user