Просмотр исходного кода

Finished feature 688

feature/701
jovan.cirkovic 3 лет назад
Родитель
Сommit
0d2ee535c9

+ 6
- 3
src/components/Cards/OfferCard/OfferCard.styled.js Просмотреть файл

@@ -372,7 +372,9 @@ export const PinIconContainer = styled(MessageIcon)`
right: 134px;
top: 18px;
@media (max-width: 600px) {
${props => props.vertical && `
${(props) =>
props.vertical &&
`
display: block;
top: initial;
right: initial;
@@ -421,13 +423,14 @@ export const PinIcon = styled(Pin)`
@media (max-width: 600px) {
top: 20px;
right: 55px;
${props => props.vertical && `
${(props) =>
props.vertical &&
`
top: initial;
bottom: 18px;
right: 18px;
`}
}
`;
export const CategoryIcon = styled(Category)`
width: 14px;

+ 4
- 0
src/components/Cards/ProfileCard/EditProfile/PIBField/PIBField.js Просмотреть файл

@@ -19,7 +19,11 @@ const PIBField = (props) => {
error={props.formik.touched.firmPIB && props.formik.errors.firmPIB}
margin="normal"
fullWidth
<<<<<<< HEAD
disabled={!props.isAdmin}
=======
// disabled
>>>>>>> 7c00f1e951b91c197b9f517e6e795cd4a821e12f
/>
</>
);

+ 1
- 0
src/components/Cards/ProfileCard/ProfileMainInfo/ProfileMainInfo.js Просмотреть файл

@@ -23,6 +23,7 @@ import { ADMIN_SINGLE_USER_PAGE } from "../../../../constants/pages";
const ProfileMainInfo = (props) => {
const { t } = useTranslation();
const { isMobile } = useIsMobile();
console.log(props.profile);
const goToUser = () => {
if (isAdminRoute()) {
history.push(

+ 1
- 1
src/components/Cards/UserReviewsCard/UserReviewsCard.js Просмотреть файл

@@ -33,6 +33,7 @@ const UserReviewsCard = (props) => {
)
isGoodCommunication = reviewEnum.NO.mainText.toUpperCase();
return {
_id: props.review._id,
name: props.review.userWhoGaveReview.name,
image: props.review.userWhoGaveReview.image,
userId: props.review.userId,
@@ -43,7 +44,6 @@ const UserReviewsCard = (props) => {
offerImage: props.review.offer.image,
};
}, [props.review]);
console.log(review);

return (
<>

+ 14
- 1
src/components/Modals/DeleteReview/DeleteReview.js Просмотреть файл

@@ -9,9 +9,22 @@ import BackdropComponent from "../../MUI/BackdropComponent";
import UserReviewsSingleCard from "../../Cards/UserReviewsCard/UserReviewsSingleCard/UserReviewsSingleCard";
import { useTranslation } from "react-i18next";
import DeleteButton from "./DeleteButton/DeleteButton";
import { useDispatch } from "react-redux";
import { removeReview } from "../../../store/actions/review/reviewActions";

const DeleteReview = (props) => {
const dispatch = useDispatch();
const reviewId = props.review._id;
const { t } = useTranslation();

const handleApiResponseSuccess = () => {
console.log("Succes");
};

const deleteReviewHandler = () => {
dispatch(removeReview({ reviewId, handleApiResponseSuccess }));
props.setOpenedDeleteModal(false);
};
return (
<>
<BackdropComponent
@@ -27,7 +40,7 @@ const DeleteReview = (props) => {
review={props.review}
/>
<XIcon onClick={() => props.setOpenedDeleteModal(false)} />
<DeleteButton />
<DeleteButton onClick={deleteReviewHandler} />
</DeleteReviewContainer>
</>
);

+ 7
- 5
src/request/apiEndpoints.js Просмотреть файл

@@ -119,9 +119,9 @@ export default {
updateUserRegistration: "/users/{userUid}",
invite: "/users/invite",
getProfile: "users/",
editProfile: "users",
editProfile: "users/{userId}",
getAllProfiles: "users/companies",
editProfileAsAdmin: "admin/users/{userId}",
getAllProfiles: "users",
getAllProfilesAsAdmin: "admin/users",
deleteProfileAsAdmin: "admin/users/{userId}",
blockProfileAsAdmin: "admin/users/{userId}/block",
@@ -188,7 +188,9 @@ export default {
validateExchange: "exchanges",
},
reviews: {
postReview: "reviews",
getUserReviews: "/users/{userId}/reviews",
postReview: "/users/{userId}/reviews",
removeReview: "/admin/reviews/{id}",
},
admin: {
categories: {
@@ -204,7 +206,7 @@ export default {
locations: {
newLocation: "admin/locations",
editLocation: "admin/locations/{locationId}",
deleteLocation: "admin/locations/{locationId}"
}
deleteLocation: "admin/locations/{locationId}",
},
},
};

+ 6
- 2
src/request/profileRequest.js Просмотреть файл

@@ -15,8 +15,12 @@ export const attemptFetchAllProfiles = () =>
export const attemptFetchAllProfilesAsAdmin = (payload) =>
getRequest(apiEndpoints.users.getAllProfilesAsAdmin + "?" + payload);

export const attemptEditProfile = (payload, requestData) =>
putRequest(apiEndpoints.users.editProfile + "/" + payload, requestData);
export const attemptEditProfile = (payload, requestData) => {
return putRequest(
replaceInUrl(apiEndpoints.users.editProfile, { userId: payload }),
requestData
);
};
export const attemptEditProfileAsAdmin = (payload, requestData) =>
putRequest(
replaceInUrl(apiEndpoints.users.editProfileAsAdmin, { userId: payload }),

+ 17
- 7
src/request/reviewRequest.js Просмотреть файл

@@ -1,9 +1,19 @@
import { getRequest, postRequest } from "."
import apiEndpoints from "./apiEndpoints"
import { deleteRequest, getRequest, postRequest, replaceInUrl } from ".";
import apiEndpoints from "./apiEndpoints";

export const attemptGiveReview = (payload) => {
return postRequest(apiEndpoints.reviews.postReview, payload);
}
export const attemptGiveReview = (userId, payload) => {
return postRequest(
replaceInUrl(apiEndpoints.reviews.postReview, { userId: userId }),
payload
);
};
export const attemptFetchReview = (payload) => {
return getRequest(`users/${payload}/reviews`)
}
return getRequest(
replaceInUrl(apiEndpoints.reviews.getUserReviews, { userId: payload })
);
};
export const attemptRemoveReview = (payload) => {
return deleteRequest(
replaceInUrl(apiEndpoints.reviews.removeReview, { id: payload })
);
};

+ 5
- 0
src/store/actions/review/reviewActionConstants.js Просмотреть файл

@@ -15,4 +15,9 @@ export const REVIEW_GET = createFetchType(REVIEW_GET_SCOPE);
export const REVIEW_GET_SUCCESS = createSuccessType(REVIEW_GET_SCOPE);
export const REVIEW_GET_ERROR = createErrorType(REVIEW_GET_SCOPE);

export const REVIEW_REMOVE_SCOPE = "REVIEW_REMOVE_SCOPE";
export const REVIEW_REMOVE = createFetchType(REVIEW_REMOVE_SCOPE);
export const REVIEW_REMOVE_SUCCESS = createSuccessType(REVIEW_REMOVE_SCOPE);
export const REVIEW_REMOVE_ERROR = createErrorType(REVIEW_REMOVE_SCOPE);

export const REVIEW_SET = createSetType("REVIEW_SET");

+ 39
- 18
src/store/actions/review/reviewActions.js Просмотреть файл

@@ -1,26 +1,47 @@
import { REVIEW_GET, REVIEW_GET_ERROR, REVIEW_GET_SUCCESS, REVIEW_GIVE, REVIEW_GIVE_ERROR, REVIEW_GIVE_SUCCESS, REVIEW_SET } from "./reviewActionConstants";
import {
REVIEW_GET,
REVIEW_GET_ERROR,
REVIEW_GET_SUCCESS,
REVIEW_GIVE,
REVIEW_GIVE_ERROR,
REVIEW_GIVE_SUCCESS,
REVIEW_REMOVE,
REVIEW_REMOVE_ERROR,
REVIEW_REMOVE_SUCCESS,
REVIEW_SET,
} from "./reviewActionConstants";

export const fetchReviews = (payload) => ({
type: REVIEW_GET,
payload,
})
type: REVIEW_GET,
payload,
});
export const fetchReviewsSuccess = () => ({
type: REVIEW_GET_SUCCESS
})
type: REVIEW_GET_SUCCESS,
});
export const fetchReviewsError = () => ({
type: REVIEW_GET_ERROR
})
type: REVIEW_GET_ERROR,
});
export const giveReview = (payload) => ({
type: REVIEW_GIVE,
payload,
})
type: REVIEW_GIVE,
payload,
});
export const giveReviewSuccess = () => ({
type: REVIEW_GIVE_SUCCESS
})
type: REVIEW_GIVE_SUCCESS,
});
export const giveReviewError = () => ({
type: REVIEW_GIVE_ERROR
})
type: REVIEW_GIVE_ERROR,
});
export const removeReview = (payload) => ({
type: REVIEW_REMOVE,
payload,
});
export const removeReviewSuccess = () => ({
type: REVIEW_REMOVE_SUCCESS,
});
export const removeReviewError = () => ({
type: REVIEW_REMOVE_ERROR,
});
export const setReviews = (payload) => ({
type: REVIEW_SET,
payload,
})
type: REVIEW_SET,
payload,
});

+ 24
- 2
src/store/saga/reviewSaga.js Просмотреть файл

@@ -1,22 +1,28 @@
import { all, takeLatest, call, put } from "@redux-saga/core/effects";
import { all, takeLatest, call, put, select } from "@redux-saga/core/effects";
import {
attemptFetchReview,
attemptGiveReview,
attemptRemoveReview,
} from "../../request/reviewRequest";
import {
REVIEW_GET,
REVIEW_GIVE,
REVIEW_REMOVE,
} from "../actions/review/reviewActionConstants";
import {
fetchReviewsError,
fetchReviewsSuccess,
giveReviewError,
giveReviewSuccess,
removeReviewError,
removeReviewSuccess,
setReviews,
} from "../actions/review/reviewActions";
import { selectUserId } from "../selectors/loginSelectors";

function* fetchReviews(payload) {
try {
console.log(payload);
const data = yield call(attemptFetchReview, payload.payload);
yield put(setReviews([...data.data].reverse()));
yield put(fetchReviewsSuccess());
@@ -28,7 +34,8 @@ function* fetchReviews(payload) {

function* giveReview(payload) {
try {
yield call(attemptGiveReview, payload.payload.review);
const userId = yield select(selectUserId);
yield call(attemptGiveReview, userId, payload.payload.review);
if (payload.payload.handleApiResponseSuccess) {
yield call(payload.payload.handleApiResponseSuccess);
}
@@ -39,9 +46,24 @@ function* giveReview(payload) {
}
}

function* removeReview(payload) {
try {
console.log(payload);
yield call(attemptRemoveReview, payload.payload.reviewId);
if (payload.payload.handleApiResponseSuccess) {
yield call(payload.payload.handleApiResponseSuccess);
}
yield put(removeReviewSuccess());
} catch (e) {
yield put(removeReviewError());
console.dir(e);
}
}

export default function* reviewSaga() {
yield all([
takeLatest(REVIEW_GET, fetchReviews),
takeLatest(REVIEW_GIVE, giveReview),
takeLatest(REVIEW_REMOVE, removeReview),
]);
}

+ 1
- 1
src/validations/editProfileValidation.js Просмотреть файл

@@ -4,7 +4,7 @@ export default (locations) =>
Yup.object().shape({
firmName: Yup.string().required(i18n.t("editProfile.labelNameRequired")),
firmPIB: Yup.string()
.required(i18n.t("editProfile.labelPIBRequired"))
// .required(i18n.t("editProfile.labelPIBRequired"))
.min(9, i18n.t("register.PIBnoOfCharacters"))
.max(9, i18n.t("register.PIBnoOfCharacters")),
firmLocation: Yup.string().oneOf(

Загрузка…
Отмена
Сохранить