mirror of
https://github.com/muerwre/vault-frontend.git
synced 2025-04-25 12:56:41 +07:00
#25 getting github issues as tasks
This commit is contained in:
parent
f014e0b51e
commit
29ffeb6b48
7 changed files with 74 additions and 19 deletions
|
@ -1,10 +1,20 @@
|
|||
import git from '~/stats/git.json';
|
||||
import { API } from '~/constants/api';
|
||||
import { api, resultMiddleware, errorMiddleware, cleanResult } from '~/utils/api';
|
||||
import { api, cleanResult } from '~/utils/api';
|
||||
import { IBorisState, IStatBackend } from './reducer';
|
||||
import { IResultWithStatus } from '../types';
|
||||
import axios from 'axios';
|
||||
import { IGetGithubIssuesResult } from '~/redux/boris/types';
|
||||
|
||||
export const getBorisGitStats = () => Promise.resolve<IBorisState['stats']['git']>(git);
|
||||
|
||||
export const getBorisBackendStats = () =>
|
||||
api.get<IStatBackend>(API.BORIS.GET_BACKEND_STATS).then(cleanResult);
|
||||
|
||||
export const getGithubIssues = () => {
|
||||
return axios
|
||||
.get<IGetGithubIssuesResult>('https://api.github.com/repos/muerwre/vault-frontend/issues', {
|
||||
params: { state: 'all', sort: 'created' },
|
||||
})
|
||||
.then(result => result.data)
|
||||
.catch(() => []);
|
||||
};
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import { createReducer } from '~/utils/reducer';
|
||||
import { BORIS_HANDLERS } from './handlers';
|
||||
import { IGithubIssue } from '~/redux/boris/types';
|
||||
|
||||
export type IStatGitRow = {
|
||||
commit: string;
|
||||
|
@ -31,6 +32,7 @@ export type IStatBackend = {
|
|||
export type IBorisState = Readonly<{
|
||||
stats: {
|
||||
git: Partial<IStatGitRow>[];
|
||||
issues: IGithubIssue[];
|
||||
backend?: IStatBackend;
|
||||
is_loading: boolean;
|
||||
};
|
||||
|
@ -39,6 +41,7 @@ export type IBorisState = Readonly<{
|
|||
const BORIS_INITIAL_STATE: IBorisState = {
|
||||
stats: {
|
||||
git: [],
|
||||
issues: [],
|
||||
backend: undefined,
|
||||
is_loading: false,
|
||||
},
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
import { takeLatest, put, call } from 'redux-saga/effects';
|
||||
import { call, put, takeLatest } from 'redux-saga/effects';
|
||||
import { BORIS_ACTIONS } from './constants';
|
||||
import { borisSetStats } from './actions';
|
||||
import { getBorisGitStats, getBorisBackendStats } from './api';
|
||||
import { getBorisBackendStats, getGithubIssues } from './api';
|
||||
import { Unwrap } from '../types';
|
||||
|
||||
function* loadStats() {
|
||||
try {
|
||||
yield put(borisSetStats({ is_loading: true }));
|
||||
|
||||
const git: Unwrap<typeof getBorisGitStats> = yield call(getBorisGitStats);
|
||||
const backend: Unwrap<typeof getBorisBackendStats> = yield call(getBorisBackendStats);
|
||||
const issues: Unwrap<typeof getGithubIssues> = yield call(getGithubIssues);
|
||||
|
||||
yield put(borisSetStats({ git, backend }));
|
||||
yield put(borisSetStats({ issues, backend }));
|
||||
} catch (e) {
|
||||
yield put(borisSetStats({ git: [], backend: undefined }));
|
||||
} finally {
|
||||
|
|
12
src/redux/boris/types.ts
Normal file
12
src/redux/boris/types.ts
Normal file
|
@ -0,0 +1,12 @@
|
|||
export interface IGithubIssue {
|
||||
id: string;
|
||||
url: string;
|
||||
html_url: string;
|
||||
body: string;
|
||||
title: string;
|
||||
state: 'open' | 'closed';
|
||||
created_at: string;
|
||||
pull_request?: unknown;
|
||||
}
|
||||
|
||||
export type IGetGithubIssuesResult = IGithubIssue[];
|
Loading…
Add table
Add a link
Reference in a new issue