-
Notifications
You must be signed in to change notification settings - Fork 24
/
AndroidModule.java
136 lines (111 loc) · 4.94 KB
/
AndroidModule.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package com.mapzen.erasermap;
import com.mapzen.android.core.ApiKeyConstants;
import com.mapzen.android.search.MapzenSearch;
import com.mapzen.android.lost.api.LostApiClient;
import com.mapzen.erasermap.model.AndroidAppSettings;
import com.mapzen.erasermap.model.ApiKeys;
import com.mapzen.erasermap.model.AppSettings;
import com.mapzen.erasermap.model.Http;
import com.mapzen.erasermap.model.IntentQueryParser;
import com.mapzen.erasermap.model.LocationConverter;
import com.mapzen.erasermap.model.MapzenLocation;
import com.mapzen.erasermap.model.MapzenLocationImpl;
import com.mapzen.erasermap.model.PermissionManager;
import com.mapzen.erasermap.model.RouteManager;
import com.mapzen.erasermap.model.TileHttpHandler;
import com.mapzen.erasermap.model.ValhallaRouteManager;
import com.mapzen.erasermap.model.ValhallaRouterFactory;
import com.mapzen.erasermap.presenter.MainPresenter;
import com.mapzen.erasermap.presenter.MainPresenterImpl;
import com.mapzen.erasermap.presenter.ViewStateManager;
import com.mapzen.erasermap.util.IntentFactory;
import com.mapzen.erasermap.view.Speaker;
import com.mapzen.erasermap.view.SpeakerboxSpeaker;
import com.mapzen.pelias.Pelias;
import com.mapzen.pelias.PeliasRequestHandler;
import com.squareup.otto.Bus;
import android.content.Context;
import java.util.HashMap;
import java.util.Map;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
@Module
public class AndroidModule {
private final EraserMapApplication application;
public AndroidModule(EraserMapApplication application) {
this.application = application;
}
@Provides @Singleton @ForApplication Context provideApplicationContext() {
return application;
}
@Provides @Singleton LostApiClient provideLocationClient() {
return new LostApiClient.Builder(application).build();
}
@Provides @Singleton CrashReportService provideCrashReportService() {
return new CrashReportService();
}
@Provides @Singleton MapzenLocation provideMapzenLocation(LostApiClient locationClient,
AppSettings settings, Bus bus, PermissionManager permissionManager) {
return new MapzenLocationImpl(locationClient, settings, bus, application, permissionManager);
}
@Provides @Singleton AppSettings provideAppSettings() {
return new AndroidAppSettings(application);
}
@Provides @Singleton MainPresenter provideMainPresenter(MapzenLocation mapzenLocation, Bus bus,
RouteManager routeManager, AppSettings settings, ViewStateManager vsm,
IntentQueryParser intentQueryParser, LocationConverter converter) {
return new MainPresenterImpl(mapzenLocation, bus, routeManager, settings, vsm,
intentQueryParser, converter);
}
@Provides @Singleton RouteManager provideRouteManager(AppSettings settings, ApiKeys apiKeys) {
final ValhallaRouteManager manager = new ValhallaRouteManager(settings,
new ValhallaRouterFactory(), application.getApplicationContext());
manager.setApiKey(apiKeys.getRoutingKey());
return manager;
}
@Provides @Singleton TileHttpHandler provideTileHttpHandler(ApiKeys apiKeys) {
final TileHttpHandler handler = new TileHttpHandler(application);
handler.setApiKey(apiKeys.getTilesKey());
return handler;
}
@Provides @Singleton Bus provideBus() {
return new Bus();
}
@Provides @Singleton MapzenSearch provideMapzenSearch(final ApiKeys apiKeys) {
final String endpoint = BuildConfig.SEARCH_BASE_URL != null ?
BuildConfig.SEARCH_BASE_URL : Pelias.DEFAULT_SEARCH_ENDPOINT;
MapzenSearch search = new MapzenSearch(application);
Pelias pelias = search.getPelias();
pelias.setEndpoint(endpoint);
pelias.setDebug(BuildConfig.DEBUG);
pelias.setRequestHandler(new PeliasRequestHandler() {
@Override public Map<String, String> headersForRequest() {
Map<String, String> headers = new HashMap<>();
headers.put(Http.HEADER_DNT, Http.VALUE_HEADER_DNT);
return headers;
}
@Override public Map<String, String> queryParamsForRequest() {
Map<String, String> params = new HashMap<>();
params.put(ApiKeyConstants.API_KEY, apiKeys.getSearchKey());
return params;
}
});
return search;
}
@Provides @Singleton Speaker provideSpeaker() {
return new SpeakerboxSpeaker(application);
}
@Provides @Singleton IntentFactory provideIntentFactory() {
return new IntentFactory();
}
@Provides @Singleton PermissionManager providePermissionManager() {
return new PermissionManager();
}
@Provides @Singleton ApiKeys provideApiKeys() {
return ApiKeys.Companion.sharedInstance(application);
}
@Provides @Singleton LocationConverter provideLocationConverter() {
return new LocationConverter();
}
}