package com.sobot.common.utils;

import org.greenrobot.eventbus.EventBus;

public class SobotEventBusUtils {
    private SobotEventBusUtils() {
        // 私有构造防止实例化
    }

    /**
     * 注册事件
     */
    public static void register(Object subscriber) {
        if (!EventBus.getDefault().isRegistered(subscriber)) {
            EventBus.getDefault().register(subscriber);
        }
    }

    /**
     * 解注册事件
     */
    public static void unregister(Object subscriber) {
        if (EventBus.getDefault().isRegistered(subscriber)) {
            EventBus.getDefault().unregister(subscriber);
        }
    }

    /**
     * 发送普通事件
     */
    public static void post(Object event) {
        EventBus.getDefault().post(event);
    }

    /**
     * 发送粘滞事件（Sticky Event）
     */
    public static void postSticky(Object event) {
        EventBus.getDefault().postSticky(event);
    }

    /**
     * 获取粘滞事件（用于获取已发送的 Sticky Event）
     */
    public static <T> T getStickyEvent(Class<T> eventType) {
        return EventBus.getDefault().getStickyEvent(eventType);
    }

    /**
     * 移除指定类型的粘滞事件
     */
    public static <T> void removeStickyEvent(Class<T> eventType) {
        EventBus.getDefault().removeStickyEvent(eventType);
    }

    /**
     * 移除所有粘滞事件
     */
    public static void removeAllStickyEvents() {
        EventBus.getDefault().removeAllStickyEvents();
    }
}
