2021-07-15 05:09:35 -04:00
|
|
|
import { DEFAULT_PER_PAGE } from '~/api';
|
2022-09-30 08:08:43 -04:00
|
|
|
import { createAlert } from '~/flash';
|
2021-02-01 10:08:56 -05:00
|
|
|
import { __ } from '~/locale';
|
2021-01-14 10:10:46 -05:00
|
|
|
import axios from '../lib/utils/axios_utils';
|
|
|
|
import { buildApiUrl } from './api_utils';
|
|
|
|
|
|
|
|
const USER_COUNTS_PATH = '/api/:version/user_counts';
|
|
|
|
const USERS_PATH = '/api/:version/users.json';
|
|
|
|
const USER_PATH = '/api/:version/users/:id';
|
|
|
|
const USER_STATUS_PATH = '/api/:version/users/:id/status';
|
|
|
|
const USER_PROJECTS_PATH = '/api/:version/users/:id/projects';
|
|
|
|
const USER_POST_STATUS_PATH = '/api/:version/user/status';
|
2022-05-04 05:09:02 -04:00
|
|
|
const USER_FOLLOW_PATH = '/api/:version/users/:id/follow';
|
|
|
|
const USER_UNFOLLOW_PATH = '/api/:version/users/:id/unfollow';
|
2021-01-14 10:10:46 -05:00
|
|
|
|
|
|
|
export function getUsers(query, options) {
|
|
|
|
const url = buildApiUrl(USERS_PATH);
|
|
|
|
return axios.get(url, {
|
|
|
|
params: {
|
|
|
|
search: query,
|
|
|
|
per_page: DEFAULT_PER_PAGE,
|
|
|
|
...options,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getUser(id, options) {
|
|
|
|
const url = buildApiUrl(USER_PATH).replace(':id', encodeURIComponent(id));
|
|
|
|
return axios.get(url, {
|
|
|
|
params: options,
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getUserCounts() {
|
|
|
|
const url = buildApiUrl(USER_COUNTS_PATH);
|
|
|
|
return axios.get(url);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getUserStatus(id, options) {
|
|
|
|
const url = buildApiUrl(USER_STATUS_PATH).replace(':id', encodeURIComponent(id));
|
|
|
|
return axios.get(url, {
|
|
|
|
params: options,
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getUserProjects(userId, query, options, callback) {
|
|
|
|
const url = buildApiUrl(USER_PROJECTS_PATH).replace(':id', userId);
|
|
|
|
const defaults = {
|
|
|
|
search: query,
|
|
|
|
per_page: DEFAULT_PER_PAGE,
|
|
|
|
};
|
|
|
|
return axios
|
|
|
|
.get(url, {
|
|
|
|
params: { ...defaults, ...options },
|
|
|
|
})
|
|
|
|
.then(({ data }) => callback(data))
|
2021-06-17 20:10:29 -04:00
|
|
|
.catch(() =>
|
2022-09-30 08:08:43 -04:00
|
|
|
createAlert({
|
2021-06-17 20:10:29 -04:00
|
|
|
message: __('Something went wrong while fetching projects'),
|
|
|
|
}),
|
|
|
|
);
|
2021-01-14 10:10:46 -05:00
|
|
|
}
|
|
|
|
|
2021-03-18 02:11:52 -04:00
|
|
|
export function updateUserStatus({ emoji, message, availability, clearStatusAfter }) {
|
2021-01-14 10:10:46 -05:00
|
|
|
const url = buildApiUrl(USER_POST_STATUS_PATH);
|
|
|
|
|
|
|
|
return axios.put(url, {
|
|
|
|
emoji,
|
|
|
|
message,
|
|
|
|
availability,
|
2021-03-18 02:11:52 -04:00
|
|
|
clear_status_after: clearStatusAfter,
|
2021-01-14 10:10:46 -05:00
|
|
|
});
|
|
|
|
}
|
2022-05-04 05:09:02 -04:00
|
|
|
|
|
|
|
export function followUser(userId) {
|
|
|
|
const url = buildApiUrl(USER_FOLLOW_PATH).replace(':id', encodeURIComponent(userId));
|
|
|
|
return axios.post(url);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function unfollowUser(userId) {
|
|
|
|
const url = buildApiUrl(USER_UNFOLLOW_PATH).replace(':id', encodeURIComponent(userId));
|
|
|
|
return axios.post(url);
|
|
|
|
}
|