diff --git a/src/dexorder/order/orderstate.py b/src/dexorder/order/orderstate.py index 0193a58..09085b0 100644 --- a/src/dexorder/order/orderstate.py +++ b/src/dexorder/order/orderstate.py @@ -3,13 +3,12 @@ import logging from dataclasses import dataclass from typing import overload -from dexorder import DELETE, db, order_log, dec +from dexorder import DELETE, db, order_log from dexorder.base.chain import current_chain from dexorder.base.order import OrderKey, TrancheKey from dexorder.base.orderlib import SwapOrderState, ElaboratedSwapOrderStatus, Fill from dexorder.blockstate import BlockDict, BlockSet from dexorder.database.model.orderindex import OrderIndex -from dexorder.pools import get_pool, ensure_pool_price, pool_prices from dexorder.routing import pool_address from dexorder.util import json from dexorder.vault_blockdata import vault_owners @@ -200,6 +199,7 @@ class Order: status = self.status.copy() status.state = final_state if self.is_open: + self._disable_triggers() # implemented in triggers.py which includes this file Order.open_orders.remove(self.key) Order.vault_open_orders.listremove(self.key.vault, self.key.order_index) try: @@ -226,6 +226,9 @@ class Order: Order.order_statuses.unload(self.key) # but then unload from memory after root promotion order_log.debug(f'order completed {status}') + def _disable_triggers(self): ... + # implemented in triggers.py which includes this file + @staticmethod def pub_order_status(_s, k, v): log.debug(f'pub order status {_s} {k} {v}') diff --git a/src/dexorder/order/triggers.py b/src/dexorder/order/triggers.py index 24e4575..38ba311 100644 --- a/src/dexorder/order/triggers.py +++ b/src/dexorder/order/triggers.py @@ -143,13 +143,18 @@ async def end_trigger_updates(): def close_order_and_disable_triggers(order: Order, final_state: SwapOrderState): + order.complete(final_state) # this will call _disable_triggers(order) + + +def _disable_triggers(order): try: triggers = OrderTriggers.instances[order.key] except KeyError: pass else: triggers.disable() - order.complete(final_state) + +Order._disable_triggers = _disable_triggers def order_error(order: Order, message:str=None):