public async Task UpdateOfflineUser(List <UserData> onlineUser, Action <List <UserData>, List <LocationData> > result = null)
        {
            Debug.Log("Update Offline User");
            var keys   = UserDataList.Keys.ToArray();
            var values = UserDataList.Values.ToArray();

            for (int i = 0; i < UserDataList.Count; i++)
            {
                UserData a = null;
                for (int j = 0; j < onlineUser.Count; j++)
                {
                    if (onlineUser[j].Id == keys[i])
                    {
                        a = onlineUser[j];
                        break;
                    }
                }
                if (a == null)
                {
                    var u = values[i];
                    if (u.Location != "offline")
                    {
                        OnLostUser?.Invoke(u);
                    }
                }
            }
            result?.Invoke(
                UserDataList.Select(l => l.Value).ToList(),
                LocationDataList.Select(l => l.Value).ToList());
        }
 public void GetUserLocations(Action <List <UserData>, List <LocationData> > result)
 {
     result(
         UserDataList.Select(l => l.Value).ToList(),
         LocationDataList.Select(l => l.Value).ToList());
 }