package cn.axzo.msg.center.message.service.card.interceptor;

import cn.axzo.msg.center.service.ButtonV3;
import cn.axzo.msg.center.utils.desision.DecisionValue;

/**
 * @author yanglin
 */
public interface CardButtonInterceptor {

    default DecisionValue<Boolean> isPerformActionAvailable(ButtonV3 button) {
        return DecisionValue.notSure();
    }

    default DecisionValue<Boolean> isActionPerformed(ButtonV3 button) {
        return DecisionValue.notSure();
    }

    default DecisionValue<String> getActionPerformedName(ButtonV3 button) {
        return DecisionValue.notSure();
    }

    default DecisionValue<Boolean> isVisibleOnCard(ButtonV3 button) {
        return DecisionValue.notSure();
    }

    default DecisionValue<Boolean> isSenderShow(ButtonV3 button) {
        return DecisionValue.notSure();
    }

    default DecisionValue<Boolean> isExecutorShow(ButtonV3 button) {
        return DecisionValue.notSure();
    }

    CardButtonInterceptor NOT_SURE = new CardButtonInterceptor() {};

}