squashed identity proof updates (#10375)
parent
3a9abe39b2
commit
be7c92061c
@ -0,0 +1,19 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class Api::V1::Accounts::IdentityProofsController < Api::BaseController
|
||||||
|
before_action :require_user!
|
||||||
|
before_action :set_account
|
||||||
|
|
||||||
|
respond_to :json
|
||||||
|
|
||||||
|
def index
|
||||||
|
@proofs = @account.identity_proofs.active
|
||||||
|
render json: @proofs, each_serializer: REST::IdentityProofSerializer
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def set_account
|
||||||
|
@account = Account.find(params[:account_id])
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,30 @@
|
|||||||
|
import api from '../api';
|
||||||
|
|
||||||
|
export const IDENTITY_PROOFS_ACCOUNT_FETCH_REQUEST = 'IDENTITY_PROOFS_ACCOUNT_FETCH_REQUEST';
|
||||||
|
export const IDENTITY_PROOFS_ACCOUNT_FETCH_SUCCESS = 'IDENTITY_PROOFS_ACCOUNT_FETCH_SUCCESS';
|
||||||
|
export const IDENTITY_PROOFS_ACCOUNT_FETCH_FAIL = 'IDENTITY_PROOFS_ACCOUNT_FETCH_FAIL';
|
||||||
|
|
||||||
|
export const fetchAccountIdentityProofs = accountId => (dispatch, getState) => {
|
||||||
|
dispatch(fetchAccountIdentityProofsRequest(accountId));
|
||||||
|
|
||||||
|
api(getState).get(`/api/v1/accounts/${accountId}/identity_proofs`)
|
||||||
|
.then(({ data }) => dispatch(fetchAccountIdentityProofsSuccess(accountId, data)))
|
||||||
|
.catch(err => dispatch(fetchAccountIdentityProofsFail(accountId, err)));
|
||||||
|
};
|
||||||
|
|
||||||
|
export const fetchAccountIdentityProofsRequest = id => ({
|
||||||
|
type: IDENTITY_PROOFS_ACCOUNT_FETCH_REQUEST,
|
||||||
|
id,
|
||||||
|
});
|
||||||
|
|
||||||
|
export const fetchAccountIdentityProofsSuccess = (accountId, identity_proofs) => ({
|
||||||
|
type: IDENTITY_PROOFS_ACCOUNT_FETCH_SUCCESS,
|
||||||
|
accountId,
|
||||||
|
identity_proofs,
|
||||||
|
});
|
||||||
|
|
||||||
|
export const fetchAccountIdentityProofsFail = (accountId, err) => ({
|
||||||
|
type: IDENTITY_PROOFS_ACCOUNT_FETCH_FAIL,
|
||||||
|
accountId,
|
||||||
|
err,
|
||||||
|
});
|
@ -0,0 +1,25 @@
|
|||||||
|
import { Map as ImmutableMap, fromJS } from 'immutable';
|
||||||
|
import {
|
||||||
|
IDENTITY_PROOFS_ACCOUNT_FETCH_REQUEST,
|
||||||
|
IDENTITY_PROOFS_ACCOUNT_FETCH_SUCCESS,
|
||||||
|
IDENTITY_PROOFS_ACCOUNT_FETCH_FAIL,
|
||||||
|
} from '../actions/identity_proofs';
|
||||||
|
|
||||||
|
const initialState = ImmutableMap();
|
||||||
|
|
||||||
|
export default function identityProofsReducer(state = initialState, action) {
|
||||||
|
switch(action.type) {
|
||||||
|
case IDENTITY_PROOFS_ACCOUNT_FETCH_REQUEST:
|
||||||
|
return state.set('isLoading', true);
|
||||||
|
case IDENTITY_PROOFS_ACCOUNT_FETCH_FAIL:
|
||||||
|
return state.set('isLoading', false);
|
||||||
|
case IDENTITY_PROOFS_ACCOUNT_FETCH_SUCCESS:
|
||||||
|
return state.update(identity_proofs => identity_proofs.withMutations(map => {
|
||||||
|
map.set('isLoading', false);
|
||||||
|
map.set('loaded', true);
|
||||||
|
map.set(action.accountId, fromJS(action.identity_proofs));
|
||||||
|
}));
|
||||||
|
default:
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
};
|
@ -0,0 +1,17 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class REST::IdentityProofSerializer < ActiveModel::Serializer
|
||||||
|
attributes :provider, :provider_username, :updated_at, :proof_url, :profile_url
|
||||||
|
|
||||||
|
def proof_url
|
||||||
|
object.badge.proof_url
|
||||||
|
end
|
||||||
|
|
||||||
|
def profile_url
|
||||||
|
object.badge.profile_url
|
||||||
|
end
|
||||||
|
|
||||||
|
def provider
|
||||||
|
object.provider.capitalize
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in new issue