Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CRUD dla Wydarzeń - close #646 #644 #645 #646 #723

Merged
merged 5 commits into from
Feb 13, 2021

Conversation

MichalKarol
Copy link
Collaborator

CRUD dla Wydarzeń.
Zamyka #646 #644 #645 #646

@MichalKarol MichalKarol changed the title CRUD for Events CRUD dla Wydarzeń Dec 28, 2020
@ad-m ad-m changed the title CRUD dla Wydarzeń CRUD dla Wydarzeń - close #646 #644 #645 #646 Dec 29, 2020
@ad-m
Copy link
Member

ad-m commented Dec 29, 2020

Po przejściu na https://small-eod-git-fork-michalkarol-feature-events-646-644-645-646.watchdogpolska.vercel.app/events/new otrzymuje w przeglądarce biały ekran, a w konsoli:
image

@MichalKarol
Copy link
Collaborator Author

@ad-m: Poprawione. Już śmiga jak należy.

@ad-m
Copy link
Member

ad-m commented Dec 30, 2020

Po przejściu do dodawania nowej sprawy podświetlają się obie pozycje menu:

image

Jaki mamy plan na datepicker w polu "Data"?

Innych uwag nie mam.

@ad-m
Copy link
Member

ad-m commented Dec 31, 2020

PR się zrobił konfliktowy.

@MichalKarol
Copy link
Collaborator Author

Poprawię jutro :D

@MichalKarol
Copy link
Collaborator Author

@ad-m: Poprawione. Niestety musiałem dodać redirect, bo wyjątkowo ignorowało exact w routach.

@ad-m
Copy link
Member

ad-m commented Jan 2, 2021

datetime-local nie jest kompatybilny z Firefox ( https://caniuse.com/input-datetime ). @mrbojko jak istotne jest dla nas wsparcie dla Firefox?

const [isSubmitting, setIsSubmitting] = useState(false);
const editedEvent = events.data.find(value => value.id === Number(match.params.id));
const [form] = Form.useForm();
function onRequestDone(response: ServiceResponse<Event>) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Robi się trochę WET: funkcje onRequestDone i onFinish są kopiowane-wklejane z komponentu na komponent z paroma tylko modyfikacjami (router.push({ where }), localeKeys.cases.{ whichView }).

Warto zrobić w tym momencie refactor, jakoś sparametryzować, wyciągnąć do osobnego pliku, tak, żeby widok mógł ich używać jakoś tak:

const onRequestDone = onRequestDoneFactory<Event>(form, '/cases', 'detailView');

const onFinish = onFinishFactory('cases', onRequestDone);

Czy coś w tym guście.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Zarówno onRequestDone jak i onFinish zależą w dużej mierze od kontekstu (onFInish: nazwa resourca, stan isSubitting, dispatch, form i opcjonalny resoureId, onRequestDone: nazwa resource, form, router, locale, stan isSubmitting). Wyciąganie tego do generyków spowoduje że będziemy mieli 2x funkcje która przyjmuje 5 albo jedną funkcję która przyjmuje 7 parametrów. Troszeczkę popracowałem z localami żeby były bardziej zwięzłe, ale wydaje mi się że to są zbyt zależne od kontekstu funkcje żeby je przenosić do generyków.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To nie wymaga aż tak znowu wielu parametrów: np. router to zwykły import. Dla onRequestDone będzie tego cztery parametry (setIsSubmitting, form, 'localeKeys.users', isEdit), z onFinish jest istotnie gorzej. Można zacząć od onRequestDone, onFinish odkładając na następny raz.

Natomiast takie kopiuj-wklej skutkuje kłopotami w przyszłości (gdy np. będzie potrzeba zmiany zachowania aplikacji - trzeba będzie tę samą zmianę pieczołowicie wydłubać w każdym komponencie), i prowokuje bugi (np. teraz komunikat błędu w UsersListView to "Nie udało się usunąć sprawy" - formatMessage({ id: localeKeys.cases.list.failedRemove }) - a nie "...usunąć użytkownika"). Im większy kawał kodu kopiujesz-wklejasz-zmieniasz tylko istotne kawałki, tym łatwiej takie błędy powstają.

Copy link
Collaborator Author

@MichalKarol MichalKarol Feb 6, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@fervero Zmiany do wszystkich widoków wrzucę w osobnym PR, bo obecnie znacząco rozrósł by się. Będą tam zmiany na paginacje, onRequestDone, onFinish i onDelete.

router.push(`/events/edit/${id}`);
}

function onRemove(id: number) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Analogiczna uwaga jak do onRequestDone i onFinish: wyekstrahować kawał wspólny dla wszystkich ListView, i tu zostawić jakiś

const onRemove = onRemoveFactory('cases/remove', 'cases');

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nie chcę przenosić logiki pokazywania błędu do fabryk czy wrapperów na funkcję. Równie dobrze można to przenieść do serwisów reduxowych, ale nie wiem czy chcemy w to iść.

});
}

async function fetchPage(props: PaginationParams): Promise<PaginationResponse<Event>> {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sytuacja podobna jak z onRemove.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Odpowiedź taka sama jak na onRemove

},
},
detailView: {
newPageHeaderContent: 'Tworzenie wydarzenie',
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Tworzenie wydarzenia"

@fervero
Copy link
Collaborator

fervero commented Feb 10, 2021

LGTM, ale zielony guzik do akceptowania mam wyszarzony. @mrbojko , lub @ad-m , czy ktoś może kliknąć na moją odpowiedzialność? :)

@ad-m
Copy link
Member

ad-m commented Feb 10, 2021

Mówisz o tym przycisku?
obraz

Ja już go kliknąłem...

@MichalKarol
Copy link
Collaborator Author

@ad-m: Myślę że @fervero chodziło o przycisk Merge 😄

@ad-m ad-m merged commit 129af34 into watchdogpolska:dev Feb 13, 2021
@ad-m
Copy link
Member

ad-m commented Feb 13, 2021

Na cudzą odpowiedzialność mergowanie - proszę bardzo 😉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants