Skip to content

Commit 92e9b81

Browse files
authored
Merge pull request #1 from freshbits/v2
Add possibility to invite a customer.
2 parents f604406 + 97db0bd commit 92e9b81

File tree

4 files changed

+94
-12
lines changed

4 files changed

+94
-12
lines changed

README.md

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ repositories {
3232
3333
dependencies {
3434
...
35-
compile 'ch.freshbits.pathshare.sdk:pathshare-sdk:1.0.1'
35+
compile 'ch.freshbits.pathshare.sdk:pathshare-sdk:2.0.0'
3636
}
3737
```
3838

@@ -62,12 +62,12 @@ public class ExampleApplication extends Application {
6262
}
6363
```
6464

65-
### Save Username
65+
### Save User
6666

6767
Before creating a session, you need to set a username:
6868

6969
```java
70-
Pathshare.client().saveUserName("Candice", new ResponseListener() {
70+
Pathshare.client().saveUser("Candice", "+14159495533", UserType.DRIVER, new ResponseListener() {
7171
@Override
7272
public void onSuccess() {
7373
// ...
@@ -80,6 +80,14 @@ Pathshare.client().saveUserName("Candice", new ResponseListener() {
8080
});
8181
```
8282

83+
There are different types of users for specific industries:
84+
85+
User Types | Description
86+
----------------------------|------------------------------------------------------------
87+
`TECHNICIAN`, `MOTORIST` | For roadside assitance industry or similar
88+
`DRIVER`, `RECIPIENT` | For delivery services or similar
89+
`INVESTIGATOR`, `CLIENT` | For legal services industry or similar
90+
8391
### Create Session
8492

8593
To create a session, use the session builder:
@@ -150,19 +158,39 @@ session = new Session.Builder()
150158
To join the session you created, call the `joinUser()` method on the session object:
151159

152160
```java
153-
session.joinUser(new ResponseListener() { ... });
161+
session.join(new ResponseListener() { ... });
154162

155163
session.isUserJoined() // => true
156164
```
157165

158166
This call will add your Pathshare user to the session and you will be able to see his location on a map in realtime in the Pathshare Professional web interface.
159167

168+
### Invite a customer
169+
170+
To invite a customer to the session, call the `inviteUser()` method on the session object:
171+
172+
```java
173+
session.inviteUser("Customer name", UserType.CLIENT, "[email protected]", "+14159495533", new InvitationResponseListener() {
174+
@Override
175+
public void onSuccess(URL url) {
176+
// ...
177+
Log.d("URL", url.toString()); // => https://m.pathsha.re/12s83a
178+
}
179+
180+
public void onError() {
181+
// ...
182+
}
183+
});
184+
```
185+
186+
This call will create a customer user and return an invitation URL that can be sent to the customer using your preffered channel. The customer will then see the driver's location in realtime as well as the ETA in a white-labeled view with your corporate identity.
187+
160188
### Leave Session
161189

162190
In order to stop sending user location and remove the user from the session, call the `leaveUser()` method:
163191

164192
```java
165-
session.leaveUser(new ResponseListener() { ... });
193+
session.leave(new ResponseListener() { ... });
166194
```
167195

168196
### Find Session

android-example-app/app/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ android {
88
applicationId "ch.freshbits.pathshare.example"
99
minSdkVersion 25
1010
targetSdkVersion 27
11-
versionCode 1_0_3
12-
versionName "1.0.3"
11+
versionCode 2_0_0
12+
versionName "2.0.0"
1313
}
1414

1515
lintOptions {
@@ -40,5 +40,5 @@ dependencies {
4040
testCompile 'junit:junit:4.12'
4141
//noinspection GradleCompatible
4242
compile 'com.android.support:appcompat-v7:27.1.1'
43-
compile 'ch.freshbits.pathshare.sdk:pathshare-sdk:1.0.3'
43+
compile 'ch.freshbits.pathshare.sdk:pathshare-sdk:2.0.0'
4444
}

android-example-app/app/src/main/java/ch/freshbits/pathshare/example/MainActivity.java

Lines changed: 52 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,19 @@
1212
import android.widget.Button;
1313
import android.widget.Toast;
1414

15+
import java.net.URL;
1516
import java.util.Date;
1617

1718
import ch.freshbits.pathshare.sdk.Pathshare;
19+
import ch.freshbits.pathshare.sdk.helper.InvitationResponseListener;
1820
import ch.freshbits.pathshare.sdk.helper.PermissionRequester;
1921
import ch.freshbits.pathshare.sdk.helper.ResponseListener;
2022
import ch.freshbits.pathshare.sdk.helper.SessionExpirationListener;
2123
import ch.freshbits.pathshare.sdk.helper.SessionResponseListener;
2224
import ch.freshbits.pathshare.sdk.location.TrackingMode;
2325
import ch.freshbits.pathshare.sdk.model.Destination;
2426
import ch.freshbits.pathshare.sdk.model.Session;
27+
import ch.freshbits.pathshare.sdk.model.UserType;
2528

2629
public class MainActivity extends Activity {
2730
private static final int TAG_PERMISSIONS_REQUEST_LOCATION_ACCESS = 1;
@@ -31,6 +34,7 @@ public class MainActivity extends Activity {
3134
Session mSession;
3235
Button mCreateButton;
3336
Button mJoinButton;
37+
Button mInviteButton;
3438
Button mLeaveButton;
3539

3640
@Override
@@ -40,20 +44,23 @@ protected void onCreate(Bundle savedInstanceState) {
4044

4145
mCreateButton = (Button) findViewById(R.id.create_session);
4246
mJoinButton = (Button) findViewById(R.id.join_session);
47+
mInviteButton = (Button) findViewById(R.id.invite_customer);
4348
mLeaveButton = (Button) findViewById(R.id.leave_session);
4449

4550
initializeCreateButton();
4651
initializeJoinButton();
52+
initializeInviteButton();
4753
initializeLeaveButton();
4854

4955
findSession();
5056
}
5157

5258
private void initializeCreateButton() {
59+
getCreateButton().setEnabled(true);
5360
getCreateButton().setOnClickListener(new View.OnClickListener() {
5461
@Override
5562
public void onClick(View view) {
56-
Pathshare.client().saveUserName("SDK User 1", new ResponseListener() {
63+
Pathshare.client().saveUser("SDK User", "+14159495533", UserType.DRIVER, new ResponseListener() {
5764
@Override
5865
public void onSuccess() {
5966
Log.d("User", "Success");
@@ -79,6 +86,16 @@ public void onClick(View v) {
7986
});
8087
}
8188

89+
private void initializeInviteButton() {
90+
getInviteButton().setEnabled(false);
91+
getInviteButton().setOnClickListener(new View.OnClickListener() {
92+
@Override
93+
public void onClick(View v) {
94+
inviteCustomer();
95+
}
96+
});
97+
}
98+
8299
private void initializeLeaveButton() {
83100
getLeaveButton().setEnabled(false);
84101
getLeaveButton().setOnClickListener(new View.OnClickListener() {
@@ -143,6 +160,25 @@ private void joinSession() {
143160
}
144161
}
145162

163+
private void inviteCustomer() {
164+
if (getSession().isExpired()) { return; }
165+
166+
getSession().inviteUser("Customer", UserType.CLIENT, "[email protected]", "+14159495533", new InvitationResponseListener() {
167+
@Override
168+
public void onSuccess(URL url) {
169+
Log.d("Invite", "Success");
170+
Log.d("URL", url.toString());
171+
getInviteButton().setEnabled(false);
172+
getLeaveButton().setEnabled(true);
173+
}
174+
175+
@Override
176+
public void onError() {
177+
Log.e("Invite", "Error");
178+
}
179+
});
180+
}
181+
146182
private void requestLocationPermission() {
147183
PermissionRequester.requestPermission(this, TAG_PERMISSIONS_REQUEST_LOCATION_ACCESS, Manifest.permission.ACCESS_FINE_LOCATION, R.string.permission_access_fine_location_rationale);
148184
}
@@ -168,12 +204,12 @@ private void performJoinSession() {
168204
try {
169205
if (getSession().isUserJoined()) { return; }
170206

171-
getSession().joinUser(new ResponseListener() {
207+
getSession().join(new ResponseListener() {
172208
@Override
173209
public void onSuccess() {
174210
Log.d("Join", "Success");
175211
getJoinButton().setEnabled(false);
176-
getLeaveButton().setEnabled(true);
212+
getInviteButton().setEnabled(true);
177213
}
178214

179215
@Override
@@ -190,7 +226,7 @@ private void leaveSession() {
190226
if (getSession().isExpired()) { return; }
191227

192228
try {
193-
getSession().leaveUser(new ResponseListener() {
229+
getSession().leave(new ResponseListener() {
194230
@Override
195231
public void onSuccess() {
196232
Log.d("Leave", "Success");
@@ -224,8 +260,10 @@ private void handleSessionExpiration() {
224260
this.runOnUiThread(new Runnable() {
225261
@Override
226262
public void run() {
263+
getInviteButton().setEnabled(false);
227264
getLeaveButton().setEnabled(false);
228265
getCreateButton().setEnabled(true);
266+
deleteSessionIdentifier();
229267
showToast("Session expired.");
230268
}
231269
});
@@ -247,6 +285,10 @@ public Button getJoinButton() {
247285
return mJoinButton;
248286
}
249287

288+
public Button getInviteButton() {
289+
return mInviteButton;
290+
}
291+
250292
public Button getLeaveButton() {
251293
return mLeaveButton;
252294
}
@@ -261,6 +303,11 @@ private void findSession() {
261303
public void onSuccess(Session session) {
262304
Log.d("Session", "Name: " + session.getName());
263305

306+
if (session.isExpired()) {
307+
deleteSessionIdentifier();
308+
return;
309+
}
310+
264311
session.setSessionExpirationListener(new SessionExpirationListener() {
265312
@Override
266313
public void onExpiration() {
@@ -272,6 +319,7 @@ public void onExpiration() {
272319

273320
getCreateButton().setEnabled(false);
274321
getJoinButton().setEnabled(true);
322+
getInviteButton().setEnabled(false);
275323
getLeaveButton().setEnabled(false);
276324
}
277325

android-example-app/app/src/main/res/layout/activity_main.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@
2323
android:text="Join Session"
2424
android:id="@+id/join_session" />
2525

26+
<Button
27+
android:layout_width="140dp"
28+
android:layout_height="wrap_content"
29+
android:text="Invite Customer"
30+
android:id="@+id/invite_customer" />
31+
2632
<Button
2733
android:layout_width="140dp"
2834
android:layout_height="wrap_content"

0 commit comments

Comments
 (0)