/
Libra
/
my-application
Обзор
Документация
Войти
/
Libra
/
my-application
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
app/src/main/java/com/libraprogramming/myapplication/presentation/presenter/AddCardPresenter.java
79 строк
3 KB
Толмачёв Владимир Викторович
Architecture refactoring 2
20 июл 2026, 17:22
20 июл 2026, 17:22
87aa6f2
Код
Авторство
О чём код?
package com.libraprogramming.myapplication.presentation.presenter; import android.content.Context; import androidx.annotation.NonNull; import com.libraprogramming.domain.interactor.SaveLoyaltyCardUseCase; import com.libraprogramming.domain.model.ExtraProperty; import com.libraprogramming.domain.model.NewCard; import com.libraprogramming.myapplication.presentation.internal.di.PerActivity; import com.libraprogramming.myapplication.presentation.mapper.CardViewModelMapper; import com.libraprogramming.myapplication.presentation.mapper.ExtraPropertyTypeMapper; import com.libraprogramming.myapplication.presentation.view.AddCardView; import com.libraprogramming.myapplication.presentation.view.model.NewCardViewModel; import org.jetbrains.annotations.NotNull; import javax.inject.Inject; import java.util.UUID; @PerActivity public class AddCardPresenter implements Presenter { @NotNull private final Context context; private final SaveLoyaltyCardUseCase useCase; private final CardViewModelMapper mapper; private AddCardView view; @Inject public AddCardPresenter( @NotNull @NonNull Context context, @NotNull @NonNull SaveLoyaltyCardUseCase useCase, @NotNull @NonNull CardViewModelMapper mapper) { this.context = context; this.useCase = useCase; this.mapper = mapper; } public void setView(AddCardView view) { this.view = view; } public void saveCard(@NotNull @NonNull final NewCardViewModel viewModel) { final var extraPropertyTypeMapper = new ExtraPropertyTypeMapper(context); final var newCard = new NewCard(); newCard.setUid(UUID.randomUUID()); newCard.setName(viewModel.getName()); newCard.setCode(viewModel.getCode()); newCard.setCodeFormat(viewModel.getCodeFormat()); for (final var propertyViewModel : viewModel.getExtraProperties()) { final var extraProperty = new ExtraProperty(); extraProperty.setUid(UUID.randomUUID()); extraProperty.setType(extraPropertyTypeMapper.map(propertyViewModel.getTypeLabel())); extraProperty.setValue(propertyViewModel.getValue()); newCard.getExtraProperties().add(extraProperty); } view.showLoading(); useCase.execute( newCard, card -> { view.hideLoading(); view.renderCard(mapper.map(card)); }, throwable -> { view.hideLoading(); view.showError(throwable.getMessage()); } ); } @Override public void destroy() { useCase.dispose(); view = null; } }