squashed identity proof updates (#10375)
parent
026dd75208
commit
69141dca26
@ -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