store contacts in a separate file, shared between wallets
This commit is contained in:
30
lib/util.py
30
lib/util.py
@@ -397,3 +397,33 @@ class QueuePipe:
|
||||
def send_all(self, requests):
|
||||
for request in requests:
|
||||
self.send(request)
|
||||
|
||||
|
||||
|
||||
class StoreDict(dict):
|
||||
|
||||
def __init__(self, config, name):
|
||||
self.config = config
|
||||
self.path = os.path.join(self.config.path, name)
|
||||
self.load()
|
||||
|
||||
def load(self):
|
||||
try:
|
||||
with open(self.path, 'r') as f:
|
||||
self.update(json.loads(f.read()))
|
||||
except:
|
||||
pass
|
||||
|
||||
def save(self):
|
||||
with open(self.path, 'w') as f:
|
||||
s = json.dumps(self, indent=4, sort_keys=True)
|
||||
r = f.write(s)
|
||||
|
||||
def __setitem__(self, key, value):
|
||||
dict.__setitem__(self, key, value)
|
||||
self.save()
|
||||
|
||||
def pop(self, key):
|
||||
if key in self.keys():
|
||||
dict.pop(self, key)
|
||||
self.save()
|
||||
|
||||
@@ -159,7 +159,6 @@ class Abstract_Wallet(object):
|
||||
self.seed = storage.get('seed', '') # encrypted
|
||||
self.labels = storage.get('labels', {})
|
||||
self.frozen_addresses = storage.get('frozen_addresses',[])
|
||||
self.addressbook = set(storage.get('contacts', []))
|
||||
|
||||
self.history = storage.get('addr_history',{}) # address -> list(txid, height)
|
||||
self.fee_per_kb = int(storage.get('fee_per_kb', RECOMMENDED_FEE))
|
||||
@@ -380,28 +379,6 @@ class Abstract_Wallet(object):
|
||||
def is_found(self):
|
||||
return self.history.values() != [[]] * len(self.history)
|
||||
|
||||
def add_contact(self, address, label=None):
|
||||
self.addressbook.add(address)
|
||||
self.storage.put('contacts', list(self.addressbook), True)
|
||||
if label:
|
||||
self.set_label(address, label)
|
||||
|
||||
def delete_contact(self, addr):
|
||||
if addr in self.addressbook:
|
||||
self.addressbook.remove(addr)
|
||||
self.storage.put('contacts', list(self.addressbook), True)
|
||||
|
||||
def get_completions(self):
|
||||
l = []
|
||||
for x in self.addressbook:
|
||||
if bitcoin.is_address(x):
|
||||
label = self.labels.get(x)
|
||||
if label:
|
||||
l.append( label + ' <' + x + '>')
|
||||
else:
|
||||
l.append(x)
|
||||
return l
|
||||
|
||||
def get_num_tx(self, address):
|
||||
""" return number of transactions where address is involved """
|
||||
return len(self.history.get(address, []))
|
||||
|
||||
Reference in New Issue
Block a user