diff --git a/app/src/main/java/com/nextcloud/talk/api/NcApi.java b/app/src/main/java/com/nextcloud/talk/api/NcApi.java index 79d4d5e5e..f52dd18c6 100644 --- a/app/src/main/java/com/nextcloud/talk/api/NcApi.java +++ b/app/src/main/java/com/nextcloud/talk/api/NcApi.java @@ -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.sharees.ShareesOverall; 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 java.util.Map; @@ -159,6 +160,9 @@ public interface NcApi { @POST Observable pingCall(@Header("Authorization") String authorization, @Url String url); + @GET + Observable getSignalingSettings(@Header("Authorization") String authorization, @Url + String url); /* QueryMap items are as follows: - "messages" : "message" diff --git a/app/src/main/java/com/nextcloud/talk/api/helpers/api/ApiHelper.java b/app/src/main/java/com/nextcloud/talk/api/helpers/api/ApiHelper.java index 29571fc8d..a616b6312 100644 --- a/app/src/main/java/com/nextcloud/talk/api/helpers/api/ApiHelper.java +++ b/app/src/main/java/com/nextcloud/talk/api/helpers/api/ApiHelper.java @@ -130,6 +130,11 @@ public class ApiHelper { return baseUrl + ocsApiVersion + spreedApiVersion + "/signaling"; } + public static String getUrlForSignalingSettings(String baseUrl) { + return getUrlForSignaling(baseUrl) + "/settings"; + } + + public static String getUrlForUserProfile(String baseUrl) { return baseUrl + ocsApiVersion + "/cloud/user"; } diff --git a/app/src/main/java/com/nextcloud/talk/api/models/json/signaling/SignalingOverall.java b/app/src/main/java/com/nextcloud/talk/api/models/json/signaling/SignalingOverall.java index 498797fc2..5eb0a266a 100644 --- a/app/src/main/java/com/nextcloud/talk/api/models/json/signaling/SignalingOverall.java +++ b/app/src/main/java/com/nextcloud/talk/api/models/json/signaling/SignalingOverall.java @@ -30,5 +30,4 @@ import lombok.Data; public class SignalingOverall { @JsonField(name = "ocs") SignalingOCS ocs; - } diff --git a/app/src/main/java/com/nextcloud/talk/api/models/json/signaling/settings/IceServer.java b/app/src/main/java/com/nextcloud/talk/api/models/json/signaling/settings/IceServer.java new file mode 100644 index 000000000..d121b5a3d --- /dev/null +++ b/app/src/main/java/com/nextcloud/talk/api/models/json/signaling/settings/IceServer.java @@ -0,0 +1,39 @@ +/* + * Nextcloud Talk application + * + * @author Mario Danic + * Copyright (C) 2017 Mario Danic + * + * 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 . + */ + +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; +} diff --git a/app/src/main/java/com/nextcloud/talk/api/models/json/signaling/settings/Settings.java b/app/src/main/java/com/nextcloud/talk/api/models/json/signaling/settings/Settings.java new file mode 100644 index 000000000..af443c40f --- /dev/null +++ b/app/src/main/java/com/nextcloud/talk/api/models/json/signaling/settings/Settings.java @@ -0,0 +1,38 @@ +/* + * Nextcloud Talk application + * + * @author Mario Danic + * Copyright (C) 2017 Mario Danic + * + * 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 . + */ + +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 stunServers; + + @JsonField(name = "turnservers") + List turnServers; +} diff --git a/app/src/main/java/com/nextcloud/talk/api/models/json/signaling/settings/SignalingSettingsOcs.java b/app/src/main/java/com/nextcloud/talk/api/models/json/signaling/settings/SignalingSettingsOcs.java new file mode 100644 index 000000000..6759517f1 --- /dev/null +++ b/app/src/main/java/com/nextcloud/talk/api/models/json/signaling/settings/SignalingSettingsOcs.java @@ -0,0 +1,34 @@ +/* + * Nextcloud Talk application + * + * @author Mario Danic + * Copyright (C) 2017 Mario Danic + * + * 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 . + */ + +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; +} diff --git a/app/src/main/java/com/nextcloud/talk/api/models/json/signaling/settings/SignalingSettingsOverall.java b/app/src/main/java/com/nextcloud/talk/api/models/json/signaling/settings/SignalingSettingsOverall.java new file mode 100644 index 000000000..04e9865ce --- /dev/null +++ b/app/src/main/java/com/nextcloud/talk/api/models/json/signaling/settings/SignalingSettingsOverall.java @@ -0,0 +1,34 @@ +/* + * Nextcloud Talk application + * + * @author Mario Danic + * Copyright (C) 2017 Mario Danic + * + * 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 . + */ + +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; +} diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java b/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java index 4f66ddd68..1b281bd5e 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java @@ -22,6 +22,7 @@ package com.nextcloud.talk.controllers; import android.app.SearchManager; import android.content.Context; +import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.support.annotation.NonNull; @@ -44,12 +45,13 @@ import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.inputmethod.EditorInfo; -import android.widget.Toast; import com.bluelinelabs.conductor.RouterTransaction; import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler; import com.bluelinelabs.conductor.changehandler.VerticalChangeHandler; +import com.bluelinelabs.conductor.internal.NoOpControllerChangeHandler; import com.nextcloud.talk.R; +import com.nextcloud.talk.activities.CallActivity; import com.nextcloud.talk.adapters.items.UserItem; import com.nextcloud.talk.api.NcApi; 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.models.RetrofitBucket; import com.nextcloud.talk.persistence.entities.UserEntity; +import com.nextcloud.talk.utils.bundle.BundleBuilder; import com.nextcloud.talk.utils.database.user.UserUtils; +import org.parceler.Parcels; + import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; @@ -450,9 +455,14 @@ public class ContactsController extends BaseController implements SearchView.OnQ @Override public void onNext(RoomOverall roomOverall) { - Toast.makeText(getActivity(), String.format(getResources().getString(R.string - .nc_contacts_click), userItem.getModel().getName()) - ,Toast.LENGTH_SHORT).show(); + overridePushHandler(new NoOpControllerChangeHandler()); + overridePopHandler(new NoOpControllerChangeHandler()); + 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 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5c55b79d3..f2af2271f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -75,7 +75,6 @@ contact selected contacts selected - Call with %1$s was created