public void AddDefaultItem() { if (_templates == null) { _templates = new TemplateGroups(); _templates.AddDefaultItem(); } if (_rootSign == null) { _rootSign = new SignGroupTree(); //_rootSign.AddDefaultItem(); } if (_libraryGroups == null) { _libraryGroups = new LibraryGroups(); _libraryGroups.AddDefaultItem(); } if (_sessionInfos == null) { _sessionInfos = new SessionInfos(); } if (_sources == null) { _sources = new ListSet <DataItem>(); } if (_recents == null) { _recents = new Recents(); } if (_lstCategory == null) { _lstCategory = new List <LiveCategory>(); } }
public void Dispose() { if (_sessionInfos != null) { _sessionInfos.Dispose(); _sessionInfos = null; } if (_libraryGroups != null) { _libraryGroups.Dispose(); _libraryGroups = null; } if (_rootSign != null) { _rootSign.Dispose(); SignGroupTree._allSigns.Dispose(); SignGroupTree._allSigns.Clear(); SignGroupTree._allSigns = null; SignGroupTree._allGroups.Dispose(); SignGroupTree._allGroups.Clear(); SignGroupTree._allGroups = null; } if (_sources != null) { _sources.Clear(); _sources = null; } }
public ProjectInfo() { _rootSign = new SignGroupTree(); _templates = new TemplateGroups(); _libraryGroups = new LibraryGroups(); _sessionInfos = new SessionInfos(); _sources = new ListSet <DataItem>(); _recents = new Recents(); }
public void Clear() { _rootSign.Dispose(); _templates.Dispose(); _libraryGroups.Dispose(); _sessionInfos.Dispose(); _sources.Dispose(); _rootSign = new SignGroupTree(); _templates = new TemplateGroups(); _libraryGroups = new LibraryGroups(); _sessionInfos = new SessionInfos(); _sources = new ListSet <DataItem>(); _recents = new Recents(); }
// Command handlers // [CommandHandler] inherited public virtual Task SignIn(SignInCommand command, CancellationToken cancellationToken = default) { var(session, user, authenticatedIdentity) = command; var context = CommandContext.GetCurrent(); if (Computed.IsInvalidating()) { _ = GetAuthInfo(session, default); _ = GetSessionInfo(session, default); var invSessionInfo = context.Operation().Items.Get <SessionInfo>(); if (invSessionInfo != null) { _ = GetUser(invSessionInfo.UserId, default); _ = GetUserSessions(invSessionInfo.UserId, default); } return(Task.CompletedTask); } if (!user.Identities.ContainsKey(authenticatedIdentity)) { throw new ArgumentOutOfRangeException( $"{nameof(command)}.{nameof(SignInCommand.AuthenticatedIdentity)}"); } var sessionInfo = SessionInfos.GetValueOrDefault(session.Id); sessionInfo ??= new SessionInfo(session.Id, Clocks.SystemClock.Now); if (sessionInfo.IsSignOutForced) { throw Errors.ForcedSignOut(); } var isNewUser = false; var userWithAuthenticatedIdentity = GetByUserIdentity(authenticatedIdentity); if (string.IsNullOrEmpty(user.Id)) { // No user.Id -> try to find existing user by authenticatedIdentity if (userWithAuthenticatedIdentity == null) { user = user with { Id = GetNextUserId() }; isNewUser = true; } else { user = MergeUsers(userWithAuthenticatedIdentity, user); } } else { // We have Id -> the user exists for sure, but we might need to switch // to userWithAuthenticatedIdentity, otherwise we'll register the same // UserIdentity for 2 or more users _ = long.Parse(user.Id, NumberStyles.Integer, CultureInfo.InvariantCulture); var existingUser = Users[user.Id]; user = userWithAuthenticatedIdentity ?? MergeUsers(existingUser, user); } // Update user.Version user = user with { Version = VersionGenerator.NextVersion(user.Version), }; // Update SessionInfo sessionInfo = sessionInfo with { AuthenticatedIdentity = authenticatedIdentity, UserId = user.Id, }; // Persist changes Users[user.Id] = user; sessionInfo = UpsertSessionInfo(sessionInfo, sessionInfo.Version); context.Operation().Items.Set(sessionInfo); context.Operation().Items.Set(isNewUser); return(Task.CompletedTask); }