Start call on click + some signaling settings

Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
Mario Danic 2017-12-07 21:15:20 +01:00
parent 9ca7fe4bb6
commit 00eac7549e
9 changed files with 168 additions and 6 deletions

View File

@ -30,6 +30,7 @@ import com.nextcloud.talk.api.models.json.rooms.RoomOverall;
import com.nextcloud.talk.api.models.json.rooms.RoomsOverall; import com.nextcloud.talk.api.models.json.rooms.RoomsOverall;
import com.nextcloud.talk.api.models.json.sharees.ShareesOverall; import com.nextcloud.talk.api.models.json.sharees.ShareesOverall;
import com.nextcloud.talk.api.models.json.signaling.SignalingOverall; import com.nextcloud.talk.api.models.json.signaling.SignalingOverall;
import com.nextcloud.talk.api.models.json.signaling.settings.SignalingSettingsOverall;
import com.nextcloud.talk.api.models.json.userprofile.UserProfileOverall; import com.nextcloud.talk.api.models.json.userprofile.UserProfileOverall;
import java.util.Map; import java.util.Map;
@ -159,6 +160,9 @@ public interface NcApi {
@POST @POST
Observable<GenericOverall> pingCall(@Header("Authorization") String authorization, @Url String url); Observable<GenericOverall> pingCall(@Header("Authorization") String authorization, @Url String url);
@GET
Observable<SignalingSettingsOverall> getSignalingSettings(@Header("Authorization") String authorization, @Url
String url);
/* /*
QueryMap items are as follows: QueryMap items are as follows:
- "messages" : "message" - "messages" : "message"

View File

@ -130,6 +130,11 @@ public class ApiHelper {
return baseUrl + ocsApiVersion + spreedApiVersion + "/signaling"; return baseUrl + ocsApiVersion + spreedApiVersion + "/signaling";
} }
public static String getUrlForSignalingSettings(String baseUrl) {
return getUrlForSignaling(baseUrl) + "/settings";
}
public static String getUrlForUserProfile(String baseUrl) { public static String getUrlForUserProfile(String baseUrl) {
return baseUrl + ocsApiVersion + "/cloud/user"; return baseUrl + ocsApiVersion + "/cloud/user";
} }

View File

@ -30,5 +30,4 @@ import lombok.Data;
public class SignalingOverall { public class SignalingOverall {
@JsonField(name = "ocs") @JsonField(name = "ocs")
SignalingOCS ocs; SignalingOCS ocs;
} }

View File

@ -0,0 +1,39 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.api.models.json.signaling.settings;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import lombok.Data;
@Data
@JsonObject
public class IceServer {
@JsonField(name = "url")
String url;
@JsonField(name = "username")
String username;
@JsonField(name = "credential")
String credential;
}

View File

@ -0,0 +1,38 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.api.models.json.signaling.settings;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import java.util.List;
import lombok.Data;
@Data
@JsonObject
public class Settings {
@JsonField(name = "stunservers")
List<IceServer> stunServers;
@JsonField(name = "turnservers")
List<IceServer> turnServers;
}

View File

@ -0,0 +1,34 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.api.models.json.signaling.settings;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.api.models.json.generic.GenericOCS;
import lombok.Data;
@Data
@JsonObject
public class SignalingSettingsOcs extends GenericOCS {
@JsonField(name = "data")
Settings settings;
}

View File

@ -0,0 +1,34 @@
/*
* Nextcloud Talk application
*
* @author Mario Danic
* Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nextcloud.talk.api.models.json.signaling.settings;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.nextcloud.talk.api.models.json.signaling.SignalingOCS;
import lombok.Data;
@Data
@JsonObject
public class SignalingSettingsOverall {
@JsonField(name = "ocs")
SignalingOCS ocs;
}

View File

@ -22,6 +22,7 @@ package com.nextcloud.talk.controllers;
import android.app.SearchManager; import android.app.SearchManager;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
@ -44,12 +45,13 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.ViewTreeObserver; import android.view.ViewTreeObserver;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
import android.widget.Toast;
import com.bluelinelabs.conductor.RouterTransaction; import com.bluelinelabs.conductor.RouterTransaction;
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler; import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
import com.bluelinelabs.conductor.changehandler.VerticalChangeHandler; import com.bluelinelabs.conductor.changehandler.VerticalChangeHandler;
import com.bluelinelabs.conductor.internal.NoOpControllerChangeHandler;
import com.nextcloud.talk.R; import com.nextcloud.talk.R;
import com.nextcloud.talk.activities.CallActivity;
import com.nextcloud.talk.adapters.items.UserItem; import com.nextcloud.talk.adapters.items.UserItem;
import com.nextcloud.talk.api.NcApi; import com.nextcloud.talk.api.NcApi;
import com.nextcloud.talk.api.helpers.api.ApiHelper; import com.nextcloud.talk.api.helpers.api.ApiHelper;
@ -60,8 +62,11 @@ import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.controllers.base.BaseController; import com.nextcloud.talk.controllers.base.BaseController;
import com.nextcloud.talk.models.RetrofitBucket; import com.nextcloud.talk.models.RetrofitBucket;
import com.nextcloud.talk.persistence.entities.UserEntity; import com.nextcloud.talk.persistence.entities.UserEntity;
import com.nextcloud.talk.utils.bundle.BundleBuilder;
import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.utils.database.user.UserUtils;
import org.parceler.Parcels;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
@ -450,9 +455,14 @@ public class ContactsController extends BaseController implements SearchView.OnQ
@Override @Override
public void onNext(RoomOverall roomOverall) { public void onNext(RoomOverall roomOverall) {
Toast.makeText(getActivity(), String.format(getResources().getString(R.string overridePushHandler(new NoOpControllerChangeHandler());
.nc_contacts_click), userItem.getModel().getName()) overridePopHandler(new NoOpControllerChangeHandler());
,Toast.LENGTH_SHORT).show(); Intent callIntent = new Intent(getActivity(), CallActivity.class);
BundleBuilder bundleBuilder = new BundleBuilder(new Bundle());
bundleBuilder.putString("roomToken", roomOverall.getOcs().getRoomId());
bundleBuilder.putParcelable("userEntity", Parcels.wrap(userEntity));
callIntent.putExtras(bundleBuilder.build());
startActivity(callIntent);
} }
@Override @Override

View File

@ -75,7 +75,6 @@
<!-- Contacts --> <!-- Contacts -->
<string name="nc_one_contact_selected">contact selected</string> <string name="nc_one_contact_selected">contact selected</string>
<string name="nc_more_contacts_selected">contacts selected</string> <string name="nc_more_contacts_selected">contacts selected</string>
<string name="nc_contacts_click">Call with %1$s was created</string>
</resources> </resources>