Subversion Repositories SmartDukaan

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
167 ashish 1
package in.shop2020.hotspot.dashbaord.client;
2
 
3
import in.shop2020.hotspot.dashbaord.client.MainPresenter.Display;
438 rajveer 4
import in.shop2020.hotspot.dashbaord.client.admin.AdminPresenter;
167 ashish 5
import in.shop2020.hotspot.dashbaord.client.event.LoadOrderListEvent;
306 ashish 6
import in.shop2020.hotspot.dashbaord.client.event.SignOutEvent;
7
import in.shop2020.hotspot.dashbaord.client.event.SignOutEventHandler;
167 ashish 8
import in.shop2020.hotspot.dashbaord.client.event.SubmitLoginInfoEvent;
9
import in.shop2020.hotspot.dashbaord.client.event.SubmitLoginInfoHandler;
10
import in.shop2020.hotspot.dashbaord.client.inbox.InboxPresenter;
11
import in.shop2020.hotspot.dashbaord.shared.actions.AuthRequest;
12
import in.shop2020.hotspot.dashbaord.shared.actions.AuthResponse;
345 ashish 13
import in.shop2020.hotspot.dashbaord.shared.actions.AuthResponse.NEXT;
167 ashish 14
 
15
import net.customware.gwt.dispatch.client.DispatchAsync;
16
 
17
import org.enunes.gwt.mvp.client.EventBus;
18
import org.enunes.gwt.mvp.client.presenter.BasePresenter;
19
import org.enunes.gwt.mvp.client.presenter.Presenter;
20
 
21
import com.google.gwt.user.client.rpc.AsyncCallback;
22
import com.google.inject.Inject;
23
import com.google.inject.Provider;
24
 
25
public class MainPresenterImpl extends BasePresenter<MainPresenter.Display> implements MainPresenter{
26
 
27
	private final Provider<InboxPresenter> inboxProvider;
28
	private final LoginDisplayPresenter lPresenter;
438 rajveer 29
	private final Provider<AdminPresenter> adminProvider;
167 ashish 30
	private Presenter<? extends org.enunes.gwt.mvp.client.view.Display> presenter;
31
	private final DispatchAsync dispatcher;
32
 
33
	@Inject
34
	public MainPresenterImpl(EventBus eventBus, Display display, LoginDisplayPresenter loginpresenter, 
438 rajveer 35
			Provider<InboxPresenter> inboxProvider, Provider<AdminPresenter> adminPresenter,final DispatchAsync dispatcher ) {
167 ashish 36
		super(eventBus, display);
37
		this.inboxProvider = inboxProvider;
438 rajveer 38
		this.adminProvider = adminPresenter;
167 ashish 39
		lPresenter = loginpresenter;
40
		lPresenter.bind();
41
		this.dispatcher = dispatcher;
42
		display.addContent(loginpresenter.getDisplay());
43
	}
44
 
45
	private void switchPresenter(
46
			Presenter<? extends org.enunes.gwt.mvp.client.view.Display> presenter) {
47
 
48
		if (this.presenter != null) {
49
			this.presenter.unbind();
50
			display.removeContent();
51
		}
52
 
53
		this.presenter = presenter;
54
 
55
		if (presenter != null) {
56
			display.addContent(presenter.getDisplay());
57
			this.presenter.bind();
58
		}
59
 
60
	}
61
 
62
	@Override
63
	public void bind(){
64
		super.bind();
306 ashish 65
		registerHandler(eventBus.addHandler(SignOutEvent.getType(), new SignOutEventHandler() {
66
 
67
			@Override
68
			public void doSignout(SignOutEvent event) {
69
				// TODO Auto-generated method stub
70
				signOut();
71
			}
72
		}));
73
 
167 ashish 74
		registerHandler(eventBus.addHandler(SubmitLoginInfoEvent.getType(), new SubmitLoginInfoHandler() {
75
 
76
			@Override
77
			public void onSubmitLoginInfo(SubmitLoginInfoEvent event) {
78
 
79
				dispatcher.execute(new AuthRequest(event.getUserName(), event.getPassword()), new  AsyncCallback<AuthResponse>() {
80
 
81
					@Override
82
					public void onFailure(Throwable caught) {
83
						lPresenter.showError("You do not seem in good terms with auth server. It is lost!");
84
 
85
					}
86
 
87
					@Override
88
					public void onSuccess(AuthResponse result) {
89
						doAuth(result);
90
					}
91
				});				
92
			}
93
		}));
94
	}
95
 
96
	private void doAuth(AuthResponse result){
97
		if (result.isStatus()){
98
			lPresenter.showError("Welcome! "+ result.getUsername() +", "+ result.getMessage());
99
 
345 ashish 100
			if(result.getNext() == NEXT.INBOX){
101
				final InboxPresenter inboxPresenter = inboxProvider.get();
102
				inboxPresenter.initialize();
103
				inboxPresenter.setUsername(result.getUsername());
104
				//inboxPresenter.refreshOrderList();
105
 
106
				inboxPresenter.getDisplay().changeGreeting(result.getUsername());
107
				switchPresenter(inboxPresenter);
108
				eventBus.fireEvent(new LoadOrderListEvent());
109
			}
438 rajveer 110
 
345 ashish 111
			if(result.getNext() == NEXT.ADMIN){
112
				final AdminPresenter adminPresenter = adminProvider.get();
113
				adminPresenter.initialize();
114
				switchPresenter(adminPresenter);
115
				//fire event to load adminPresenter
438 rajveer 116
				eventBus.fireEvent(new LoadOrderListEvent());
117
			}
167 ashish 118
 
119
		}
120
		else 
121
			lPresenter.showError("Who are you man! Have we met before? ");
122
	}
123
 
306 ashish 124
	private void signOut(){
125
 
126
		lPresenter.reset();
127
		switchPresenter(lPresenter);
128
	}
129
 
167 ashish 130
	@Override
131
	public void unbind() {
132
		super.unbind();
133
		if (presenter != null) {
134
			presenter.unbind();
135
		}
136
	}
137
}