public void BeginSyncCheck() { var sync = new SyncCheckAction(Context); var wxSync = new WebwxSyncAction(Context, async(s, e) => { if (e.Type == ActionEventType.EvtRetry) { return; } sync.ExecuteAsync().Forget(); if (e.Type == ActionEventType.EvtOK) { var msgs = (IList <Message>)e.Target; // if (msgs.Count == 0) await Task.Delay(5 * 1000); foreach (var msg in msgs) { var notify = WeChatNotifyEvent.CreateEvent(WeChatNotifyEventType.Message, msg); await Context.FireNotifyAsync(notify); } } }); sync.OnActionEvent += (sender, @event) => { if (@event.Type == ActionEventType.EvtError) { Context.GetModule <SessionModule>().State = SessionState.Offline; Context.FireNotify(WeChatNotifyEvent.CreateEvent(WeChatNotifyEventType.Offline)); } else if (@event.Type == ActionEventType.EvtOK) { var result = (SyncCheckResult)@event.Target; switch (result) { case SyncCheckResult.Offline: case SyncCheckResult.Kicked: Context.FireNotify(WeChatNotifyEvent.CreateEvent(WeChatNotifyEventType.Offline)); return(Task.CompletedTask); case SyncCheckResult.UsingPhone: case SyncCheckResult.NewMsg: break; case SyncCheckResult.RedEnvelope: case SyncCheckResult.Nothing: break; } (result == SyncCheckResult.Nothing ? sender : wxSync).ExecuteAsyncAuto().Forget(); } return(Task.CompletedTask); }; sync.ExecuteAsyncAuto().Forget(); }
public void BeginSyncCheck() { var sync = new SyncCheckAction(Context); var wxSync = new WebwxSyncAction(Context, async (s, e) => { if (e.Type == ActionEventType.EvtRetry) return; sync.ExecuteAsync().Forget(); if (e.Type == ActionEventType.EvtOK) { var msgs = (IList<Message>)e.Target; // if (msgs.Count == 0) await Task.Delay(5 * 1000); foreach (var msg in msgs) { var notify = WeChatNotifyEvent.CreateEvent(WeChatNotifyEventType.Message, msg); await Context.FireNotifyAsync(notify); } } }); sync.OnActionEvent += (sender, @event) => { if (@event.Type == ActionEventType.EvtError) { Context.GetModule<SessionModule>().State = SessionState.Offline; Context.FireNotify(WeChatNotifyEvent.CreateEvent(WeChatNotifyEventType.Offline)); } else if (@event.Type == ActionEventType.EvtOK) { var result = (SyncCheckResult)@event.Target; switch (result) { case SyncCheckResult.Offline: case SyncCheckResult.Kicked: Context.FireNotify(WeChatNotifyEvent.CreateEvent(WeChatNotifyEventType.Offline)); return Task.CompletedTask; case SyncCheckResult.UsingPhone: case SyncCheckResult.NewMsg: break; case SyncCheckResult.RedEnvelope: case SyncCheckResult.Nothing: break; } (result == SyncCheckResult.Nothing ? sender : wxSync).ExecuteAsyncAuto().Forget(); } return Task.CompletedTask; }; sync.ExecuteAsyncAuto().Forget(); }