# -*- coding: utf-8 -*- # Copyright (c) 2023 tecnovert # Distributed under the MIT software license, see the accompanying # file LICENSE or http://www.opensource.org/licenses/mit-license.php. from .util import ( PAGE_LIMIT, get_data_entry, have_data_entry, get_data_entry_or, validateTextInput, set_pagination_filters, ) from basicswap.util import ( ensure, ) from basicswap.basicswap_util import ( AddressTypes, strAddressType, ) def page_smsgaddresses(self, url_split, post_string): swap_client = self.server.swap_client swap_client.checkSystemStatus() summary = swap_client.getSummary() filters = { 'page_no': 1, 'limit': PAGE_LIMIT, 'sort_by': 'created_at', 'sort_dir': 'desc', 'addr_type': -1, } page_data = {} messages = [] err_messages = [] smsgaddresses = [] listaddresses = True form_data = self.checkForm(post_string, 'smsgaddresses', err_messages) if form_data: edit_address_id = None for key in form_data: if key.startswith(b'editaddr_'): edit_address_id = int(key.split(b'_')[1]) break if edit_address_id is not None: listaddresses = False page_data['edit_address'] = edit_address_id page_data['addr_data'] = swap_client.listAllSMSGAddresses({'addr_id': edit_address_id})[0] elif have_data_entry(form_data, 'saveaddr'): edit_address_id = int(get_data_entry(form_data, 'edit_address_id')) edit_addr = get_data_entry(form_data, 'edit_address') active_ind = int(get_data_entry(form_data, 'active_ind')) ensure(active_ind in (0, 1), 'Invalid sort by') addressnote = get_data_entry_or(form_data, 'addressnote', '') if not validateTextInput(addressnote, 'Address note', err_messages, max_length=30): listaddresses = False page_data['edit_address'] = edit_address_id else: swap_client.editSMSGAddress(edit_addr, active_ind=active_ind, addressnote=addressnote) messages.append(f'Edited address {edit_addr}') elif have_data_entry(form_data, 'shownewaddr'): listaddresses = False page_data['new_address'] = True elif have_data_entry(form_data, 'showaddaddr'): listaddresses = False page_data['new_send_address'] = True elif have_data_entry(form_data, 'createnewaddr'): addressnote = get_data_entry_or(form_data, 'addressnote', '') if not validateTextInput(addressnote, 'Address note', err_messages, max_length=30): listaddresses = False page_data['new_address'] = True else: new_addr, pubkey = swap_client.newSMSGAddress(addressnote=addressnote) messages.append(f'Created address {new_addr}, pubkey {pubkey}') elif have_data_entry(form_data, 'createnewsendaddr'): pubkey_hex = get_data_entry(form_data, 'addresspubkey') addressnote = get_data_entry_or(form_data, 'addressnote', '') if not validateTextInput(addressnote, 'Address note', messages, max_length=30) or \ not validateTextInput(pubkey_hex, 'Pubkey', messages, max_length=66): listaddresses = False page_data['new_send_address'] = True else: new_addr = swap_client.addSMSGAddress(pubkey_hex, addressnote=addressnote) messages.append(f'Added address {new_addr}') if not have_data_entry(form_data, 'clearfilters'): if have_data_entry(form_data, 'sort_by'): sort_by = get_data_entry(form_data, 'sort_by') ensure(sort_by in ['created_at', 'rate'], 'Invalid sort by') filters['sort_by'] = sort_by if have_data_entry(form_data, 'sort_dir'): sort_dir = get_data_entry(form_data, 'sort_dir') ensure(sort_dir in ['asc', 'desc'], 'Invalid sort dir') filters['sort_dir'] = sort_dir if have_data_entry(form_data, 'filter_addressnote'): addressnote = get_data_entry(form_data, 'filter_addressnote') if validateTextInput(addressnote, 'Address note', err_messages, max_length=30): filters['addressnote'] = addressnote if have_data_entry(form_data, 'filter_addr_type'): filters['addr_type'] = int(get_data_entry(form_data, 'filter_addr_type')) set_pagination_filters(form_data, filters) if listaddresses is True: smsgaddresses = swap_client.listAllSMSGAddresses(filters) page_data['addr_types'] = [(int(t), strAddressType(t)) for t in AddressTypes] page_data['network_addr'] = swap_client.network_addr for addr in smsgaddresses: addr['type'] = strAddressType(addr['type']) template = self.server.env.get_template('smsgaddresses.html') return self.render_template(template, { 'messages': messages, 'err_messages': err_messages, 'filters': filters, 'data': page_data, 'smsgaddresses': smsgaddresses, 'page_data': page_data, 'summary': summary, })