using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using GraphQL;
namespace Speckle.Core.Api;
public partial class Client
{
///
/// Gets the currently active user profile.
///
///
///
public async Task ActiveUserGet(CancellationToken cancellationToken = default)
{
var request = new GraphQLRequest
{
Query =
@"query User {
activeUser {
id,
email,
name,
bio,
company,
avatar,
verified,
profiles,
role,
}
}"
};
return (await ExecuteGraphQLRequest(request, cancellationToken).ConfigureAwait(false)).activeUser;
}
///
/// Get another user's profile by its user id.
///
/// Id of the user you are looking for
///
///
public async Task OtherUserGet(string id, CancellationToken cancellationToken = default)
{
var request = new GraphQLRequest
{
Query =
@"query LimitedUser($id: String!) {
otherUser(id: $id){
id,
name,
bio,
company,
avatar,
verified,
role,
}
}",
Variables = new { id }
};
return (await ExecuteGraphQLRequest(request, cancellationToken).ConfigureAwait(false)).otherUser;
}
///
/// Searches for a user on the server.
///
/// String to search for. Must be at least 3 characters
/// Max number of users to return
///
public async Task> UserSearch(
string query,
int limit = 10,
CancellationToken cancellationToken = default
)
{
var request = new GraphQLRequest
{
Query =
@"query UserSearch($query: String!, $limit: Int!) {
userSearch(query: $query, limit: $limit) {
cursor,
items {
id
name
bio
company
avatar
verified
role
}
}
}",
Variables = new { query, limit }
};
return (await ExecuteGraphQLRequest(request, cancellationToken).ConfigureAwait(false))
.userSearch
.items;
}
}