From be2f4defb7dc2f0e405ffef0ad2d86ac780e1144 Mon Sep 17 00:00:00 2001 From: Sanskar Bajpai Date: Thu, 2 Jun 2022 00:56:06 +0530 Subject: [PATCH 1/2] commit to be deleted --- src/modals/templates/add-contact.js | 58 ++++++++++++++++++++ src/plugins/rosterview/modals/add-contact.js | 11 ++++ src/plugins/rosterview/utils.js | 30 ++++++++++ src/shared/autocomplete/component.js | 15 +++++ 4 files changed, 114 insertions(+) create mode 100644 src/modals/templates/add-contact.js diff --git a/src/modals/templates/add-contact.js b/src/modals/templates/add-contact.js new file mode 100644 index 0000000000..48d4180527 --- /dev/null +++ b/src/modals/templates/add-contact.js @@ -0,0 +1,58 @@ +import { __ } from 'i18n'; +import { api } from '@converse/headless/core.js'; +import { html } from "lit"; +import { modal_header_close_button } from "plugins/modal/templates/buttons.js" +import { getServerList } from "../../plugins/rosterview/utils" + + +export default (el) => { + const i18n_add = __('Add'); + const i18n_contact_placeholder = __('name@example.org'); + const i18n_error_message = __('Please enter a valid XMPP address'); + const i18n_group = __('Group'); + const i18n_new_contact = __('Add a Contact'); + const i18n_nickname = __('Name'); + const i18n_xmpp_address = __('XMPP Address'); + return html` + + `; +} diff --git a/src/plugins/rosterview/modals/add-contact.js b/src/plugins/rosterview/modals/add-contact.js index 8f9cb31dd7..fa2d9982a4 100644 --- a/src/plugins/rosterview/modals/add-contact.js +++ b/src/plugins/rosterview/modals/add-contact.js @@ -27,12 +27,23 @@ export default class AddContactModal extends BaseModal { } afterRender () { +<<<<<<< HEAD:src/plugins/rosterview/modals/add-contact.js if (typeof api.settings.get('xhr_user_search_url') === 'string') { this.initXHRAutoComplete(); } else { this.initJIDAutoComplete(); } } +======= + const jid_input = this.el.querySelector('input[name="jid"]'); + this.el.addEventListener('shown.bs.modal', () => jid_input.focus(), false); + }, + + getGroupsAutoCompleteList () { + return ['apple', 'pear', 'banana']; + // return [...new Set(_converse.roster.map(i => i.get('gruop')).filter(i => i))]; + }, +>>>>>>> a8e66ff20 (commit to be deleted):src/modals/add-contact.js initJIDAutoComplete () { if (!api.settings.get('autocomplete_add_contact')) { diff --git a/src/plugins/rosterview/utils.js b/src/plugins/rosterview/utils.js index 8b5c69429a..e4f903ff47 100644 --- a/src/plugins/rosterview/utils.js +++ b/src/plugins/rosterview/utils.js @@ -1,6 +1,10 @@ +<<<<<<< HEAD import log from "@converse/headless/log"; import { __ } from 'i18n'; import { _converse, api } from "@converse/headless/core"; +======= +import { _converse, api, converse } from "@converse/headless/core"; +>>>>>>> a8e66ff20 (commit to be deleted) export function removeContact (contact) { contact.removeFromRoster( @@ -112,3 +116,29 @@ export function populateContactsMap (contacts_map, contact) { } return contacts_map; } + +let final_list = []; +let timestamp = null; + +async function getServerList() { + const responseA = await fetch('https://data.xmpp.net/providers/v1/providers-A.json'); + const dataA = await responseA.json(); + const popular_mucsA = dataA.items.map(item => item.jid); + const responseB = await fetch('https://data.xmpp.net/providers/v1/providers-B.json'); + const dataB = await responseB.json(); + const popular_mucsB = dataB.items.map(item => item.jid); + const responseC = await fetch('https://data.xmpp.net/providers/v1/providers-C.json'); + const dataC = await responseC.json(); + const popular_mucsC = dataC.items.map(item => item.jid); + const response = [...popular_mucsA, ...popular_mucsB, ...popular_mucsC]; + console.log(response) + final_list = [...new Set(response)]; +} + +export async function getXMPPList() { + if (!timestamp || converse.env.dayjs().isAfter(timestamp, 'day')) { + await getServerList(); + timestamp = (new Date()).toISOString(); + } + return final_list; +} diff --git a/src/shared/autocomplete/component.js b/src/shared/autocomplete/component.js index ce9a4f4189..3e39bc6a03 100644 --- a/src/shared/autocomplete/component.js +++ b/src/shared/autocomplete/component.js @@ -48,7 +48,12 @@ export default class AutoCompleteComponent extends CustomElement { 'getAutoCompleteList': { type: Function }, 'list': { type: Array }, 'auto_evaluate': { type: Boolean }, +<<<<<<< HEAD 'auto_first': { type: Boolean }, +======= + 'dataMap': { type: Function }, + 'auto_first': { type: Boolean }, // Should the first element be automatically selected? +>>>>>>> a8e66ff20 (commit to be deleted) 'filter': { type: String }, 'include_triggers': { type: String }, 'min_chars': { type: Number }, @@ -65,7 +70,12 @@ export default class AutoCompleteComponent extends CustomElement { this.auto_evaluate = true; this.auto_first = false; this.filter = 'contains'; +<<<<<<< HEAD this.include_triggers = ''; +======= + this.dataMap = a => a; // Function that maps user provided input to a suggestion value + this.include_triggers = ''; // Space separated chars which should be included in the returned value +>>>>>>> a8e66ff20 (commit to be deleted) this.match_current_word = false; // Match only the current word, otherwise all input is matched this.max_items = 10; this.min_chars = 1; @@ -105,7 +115,12 @@ export default class AutoCompleteComponent extends CustomElement { 'auto_first': this.auto_first, 'filter': this.filter == 'contains' ? FILTER_CONTAINS : FILTER_STARTSWITH, 'include_triggers': [], +<<<<<<< HEAD 'list': this.list ?? ((q) => this.getAutoCompleteList(q)), +======= + 'list': () => this.getAutoCompleteList(), + 'data': (a) => this.dataMap(a), +>>>>>>> a8e66ff20 (commit to be deleted) 'match_current_word': true, 'max_items': this.max_items, 'min_chars': this.min_chars, From 817672ff26a13ab0f230a998f6eb7c2eeaaf2b6a Mon Sep 17 00:00:00 2001 From: Sanskar Bajpai Date: Fri, 4 Nov 2022 21:35:12 +0100 Subject: [PATCH 2/2] fixed rebase errors --- src/plugins/rosterview/modals/add-contact.js | 9 --------- src/plugins/rosterview/utils.js | 6 ------ src/shared/autocomplete/component.js | 12 ------------ 3 files changed, 27 deletions(-) diff --git a/src/plugins/rosterview/modals/add-contact.js b/src/plugins/rosterview/modals/add-contact.js index fa2d9982a4..4ca8bb466a 100644 --- a/src/plugins/rosterview/modals/add-contact.js +++ b/src/plugins/rosterview/modals/add-contact.js @@ -27,14 +27,6 @@ export default class AddContactModal extends BaseModal { } afterRender () { -<<<<<<< HEAD:src/plugins/rosterview/modals/add-contact.js - if (typeof api.settings.get('xhr_user_search_url') === 'string') { - this.initXHRAutoComplete(); - } else { - this.initJIDAutoComplete(); - } - } -======= const jid_input = this.el.querySelector('input[name="jid"]'); this.el.addEventListener('shown.bs.modal', () => jid_input.focus(), false); }, @@ -43,7 +35,6 @@ export default class AddContactModal extends BaseModal { return ['apple', 'pear', 'banana']; // return [...new Set(_converse.roster.map(i => i.get('gruop')).filter(i => i))]; }, ->>>>>>> a8e66ff20 (commit to be deleted):src/modals/add-contact.js initJIDAutoComplete () { if (!api.settings.get('autocomplete_add_contact')) { diff --git a/src/plugins/rosterview/utils.js b/src/plugins/rosterview/utils.js index e4f903ff47..12510237ad 100644 --- a/src/plugins/rosterview/utils.js +++ b/src/plugins/rosterview/utils.js @@ -1,10 +1,4 @@ -<<<<<<< HEAD -import log from "@converse/headless/log"; -import { __ } from 'i18n'; -import { _converse, api } from "@converse/headless/core"; -======= import { _converse, api, converse } from "@converse/headless/core"; ->>>>>>> a8e66ff20 (commit to be deleted) export function removeContact (contact) { contact.removeFromRoster( diff --git a/src/shared/autocomplete/component.js b/src/shared/autocomplete/component.js index 3e39bc6a03..10d7d7b0c1 100644 --- a/src/shared/autocomplete/component.js +++ b/src/shared/autocomplete/component.js @@ -48,12 +48,8 @@ export default class AutoCompleteComponent extends CustomElement { 'getAutoCompleteList': { type: Function }, 'list': { type: Array }, 'auto_evaluate': { type: Boolean }, -<<<<<<< HEAD - 'auto_first': { type: Boolean }, -======= 'dataMap': { type: Function }, 'auto_first': { type: Boolean }, // Should the first element be automatically selected? ->>>>>>> a8e66ff20 (commit to be deleted) 'filter': { type: String }, 'include_triggers': { type: String }, 'min_chars': { type: Number }, @@ -70,12 +66,8 @@ export default class AutoCompleteComponent extends CustomElement { this.auto_evaluate = true; this.auto_first = false; this.filter = 'contains'; -<<<<<<< HEAD - this.include_triggers = ''; -======= this.dataMap = a => a; // Function that maps user provided input to a suggestion value this.include_triggers = ''; // Space separated chars which should be included in the returned value ->>>>>>> a8e66ff20 (commit to be deleted) this.match_current_word = false; // Match only the current word, otherwise all input is matched this.max_items = 10; this.min_chars = 1; @@ -115,12 +107,8 @@ export default class AutoCompleteComponent extends CustomElement { 'auto_first': this.auto_first, 'filter': this.filter == 'contains' ? FILTER_CONTAINS : FILTER_STARTSWITH, 'include_triggers': [], -<<<<<<< HEAD - 'list': this.list ?? ((q) => this.getAutoCompleteList(q)), -======= 'list': () => this.getAutoCompleteList(), 'data': (a) => this.dataMap(a), ->>>>>>> a8e66ff20 (commit to be deleted) 'match_current_word': true, 'max_items': this.max_items, 'min_chars': this.min_chars,