package com.yoghurt.crypto.transactions.client.ui;
import com.google.gwt.core.shared.GWT;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;
import com.yoghurt.crypto.transactions.client.place.AddressPlace;
import com.yoghurt.crypto.transactions.client.util.address.AddressEncodeUtil;
import com.yoghurt.crypto.transactions.client.util.address.AddressParseUtil;
import com.yoghurt.crypto.transactions.client.util.address.Base58;
import com.yoghurt.crypto.transactions.shared.domain.AddressInformation;
import com.yoghurt.crypto.transactions.shared.domain.Base58CheckContents;
import com.yoghurt.crypto.transactions.shared.service.BlockchainRetrievalServiceAsync;
public class AddressActivity extends LazyLookupActivity<AddressInformation, AddressPlace> implements AddressView.Presenter {
private final AddressView view;
private Base58CheckContents address;
@Inject
public AddressActivity(final AddressView view, @Assisted final AddressPlace place, final BlockchainRetrievalServiceAsync service) {
super(place, service);
this.view = view;
}
@Override
public void start(final AcceptsOneWidget panel, final EventBus eventBus) {
address = AddressParseUtil.parseAddress(place.getPayload());
panel.setWidget(view);
if(address == null) {
return;
}
view.setAddress(address);
super.start(panel, eventBus);
}
@Override
protected void doLookup(final AddressPlace place, final AsyncCallback<AddressInformation> callback) {
final String addressString = Base58.encode(AddressEncodeUtil.encodeAddress(address));
service.getAddressInformation(addressString, callback);
}
@Override
protected void doDeferredError(final AcceptsOneWidget panel, final Throwable caught) {
// Not supported
GWT.log("boohoo " + caught.getMessage());
}
@Override
protected void doDeferredStart(final AcceptsOneWidget panel, final AddressInformation info) {
GWT.log("yay?");
view.setAddressInformation(info);
}
}