protected override void OnEnabling(EnablingEventArgs e) { base.OnEnabling(e); if (!e.Cancel) { ThreadPool.QueueUserWorkItem(o => { try { bool found = false; string saveTokenActivities = string.Empty; GPlusActivities activities = apiHelper.ListActivities(); do { saveTokenActivities = activities.nextPageToken; foreach (GPlusActivity activity in activities.items) { if (activity.url.Equals(activityLink)) { activityId = activity.id; found = true; break; } } if (found) { break; } activities = apiHelper.ListActivities(activities.nextPageToken); } while (!string.IsNullOrEmpty(saveTokenActivities)); if (found) { StartTimer(100); } else { ErrorLog.AddError(ErrorType.Failure, string.Format(Strings.General_Incorrect, Strings.General_ActivityID)); e.Cancel = true; } } catch (Exception ex) { ErrorLog.AddError(ErrorType.Failure, Strings.GooglePlus_EventCouldntBeEnabled); Logger.Write(ex); e.Cancel = true; return; } }); } }
protected override void timer_Elapsed(object sender, ElapsedEventArgs e) { timer.Stop(); try { DateTime newLastActivityTime = new DateTime(); GPlusActivities activities = apiHelper.ListActivities(); if (isFirstTime) { if (activities.items.Length == 0) { // The user hasn't shared anything lastAddedItemTimestamp = DateTime.MinValue; } else { GPlusActivity activity = activities.items[0]; lastAddedItemTimestamp = activity.published; } isFirstTime = false; timer.Interval = int.Parse(Strings.General_TimeInterval); timer.Start(); return; } string saveTokenActivity = string.Empty; bool finish = false; do { saveTokenActivity = activities.nextPageToken; foreach (GPlusActivity activity in activities.items) { if (activity.published.CompareTo(lastAddedItemTimestamp) > 0) { Trigger(); if (activity.published.CompareTo(newLastActivityTime) > 0) { newLastActivityTime = activity.published; } } else { // We don't have any new event. finish = true; break; } } if (finish) { break; } activities = apiHelper.ListActivities(saveTokenActivity); } while (!string.IsNullOrEmpty(saveTokenActivity)); if (lastAddedItemTimestamp.CompareTo(newLastActivityTime) < 0) { lastAddedItemTimestamp = newLastActivityTime; } } catch (Exception ex) { ErrorLog.AddError(ErrorType.Failure, Strings.GooglePlus_ErrorMonitoringNewActivity); Logger.Write(ex); return; } timer.Start(); }