mirror of
https://github.com/oxen-io/session-android.git
synced 2025-01-12 14:13:38 +00:00
UI improvements.
This commit is contained in:
parent
b676c25930
commit
4657b79179
@ -254,7 +254,7 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc
|
|||||||
}
|
}
|
||||||
|
|
||||||
public @Nullable LokiGroupChatAPI getLokiGroupChatAPI() {
|
public @Nullable LokiGroupChatAPI getLokiGroupChatAPI() {
|
||||||
if (lokiGroupChatAPI == null && TextSecurePreferences.isPushRegistered(this)) {
|
if (lokiGroupChatAPI == null && IdentityKeyUtil.hasIdentityKey(this)) {
|
||||||
String userHexEncodedPublicKey = TextSecurePreferences.getLocalNumber(this);
|
String userHexEncodedPublicKey = TextSecurePreferences.getLocalNumber(this);
|
||||||
byte[] userPrivateKey = IdentityKeyUtil.getIdentityKeyPair(this).getPrivateKey().serialize();
|
byte[] userPrivateKey = IdentityKeyUtil.getIdentityKeyPair(this).getPrivateKey().serialize();
|
||||||
LokiAPIDatabase apiDatabase = DatabaseFactory.getLokiAPIDatabase(this);
|
LokiAPIDatabase apiDatabase = DatabaseFactory.getLokiAPIDatabase(this);
|
||||||
|
@ -52,9 +52,17 @@ public class Address implements Parcelable, Comparable<Address> {
|
|||||||
|
|
||||||
private final String address;
|
private final String address;
|
||||||
|
|
||||||
|
// Loki - Special flag to indicate whether this address is meant to representing a public chat or not
|
||||||
|
private Boolean isPublicChat;
|
||||||
|
|
||||||
private Address(@NonNull String address) {
|
private Address(@NonNull String address) {
|
||||||
|
this(address, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Address(@NonNull String address, Boolean isPublicChat) {
|
||||||
if (address == null) throw new AssertionError(address);
|
if (address == null) throw new AssertionError(address);
|
||||||
this.address = address;
|
this.address = address;
|
||||||
|
this.isPublicChat = isPublicChat;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Address(Parcel in) {
|
public Address(Parcel in) {
|
||||||
@ -69,6 +77,10 @@ public class Address implements Parcelable, Comparable<Address> {
|
|||||||
return Address.fromSerialized(external);
|
return Address.fromSerialized(external);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static @NonNull Address fromPublicChatGroupID(@NonNull String serialized) {
|
||||||
|
return new Address(serialized, true);
|
||||||
|
}
|
||||||
|
|
||||||
public static @NonNull List<Address> fromSerializedList(@NonNull String serialized, char delimiter) {
|
public static @NonNull List<Address> fromSerializedList(@NonNull String serialized, char delimiter) {
|
||||||
String[] escapedAddresses = DelimiterUtil.split(serialized, delimiter);
|
String[] escapedAddresses = DelimiterUtil.split(serialized, delimiter);
|
||||||
List<Address> addresses = new LinkedList<>();
|
List<Address> addresses = new LinkedList<>();
|
||||||
@ -131,7 +143,7 @@ public class Address implements Parcelable, Comparable<Address> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public @NonNull String toPhoneString() {
|
public @NonNull String toPhoneString() {
|
||||||
if (!isPhone()) {
|
if (!isPhone() && !isPublicChat) {
|
||||||
if (isEmail()) throw new AssertionError("Not e164, is email");
|
if (isEmail()) throw new AssertionError("Not e164, is email");
|
||||||
if (isGroup()) throw new AssertionError("Not e164, is group");
|
if (isGroup()) throw new AssertionError("Not e164, is group");
|
||||||
throw new AssertionError("Not e164, unknown");
|
throw new AssertionError("Not e164, unknown");
|
||||||
|
@ -292,7 +292,9 @@ public class PushGroupSendJob extends PushSendJob implements InjectableType {
|
|||||||
long threadID = GroupManager.getThreadIdFromGroupId(groupId, context);
|
long threadID = GroupManager.getThreadIdFromGroupId(groupId, context);
|
||||||
LokiGroupChat chat = DatabaseFactory.getLokiThreadDatabase(context).getGroupChat(threadID);
|
LokiGroupChat chat = DatabaseFactory.getLokiThreadDatabase(context).getGroupChat(threadID);
|
||||||
if (chat != null) {
|
if (chat != null) {
|
||||||
result.add(Address.fromSerialized(chat.getServer()));
|
// We need to somehow maintain information that will allow the sender to map
|
||||||
|
// a Recipient to the correct public chat thread, and so this might be a bit hacky
|
||||||
|
result.add(Address.fromPublicChatGroupID(groupId));
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -58,8 +58,8 @@ class AddPublicChatActivity : PassphraseRequiredActionBarActivity() {
|
|||||||
val inputMethodManager = getSystemService(BaseActionBarActivity.INPUT_METHOD_SERVICE) as InputMethodManager
|
val inputMethodManager = getSystemService(BaseActionBarActivity.INPUT_METHOD_SERVICE) as InputMethodManager
|
||||||
inputMethodManager.hideSoftInputFromWindow(serverUrlEditText.windowToken, 0)
|
inputMethodManager.hideSoftInputFromWindow(serverUrlEditText.windowToken, 0)
|
||||||
|
|
||||||
val url = serverUrlEditText.text.toString().toLowerCase()
|
val url = serverUrlEditText.text.toString().toLowerCase().replace("http://", "https://")
|
||||||
if (!Patterns.WEB_URL.matcher(url).matches()) { return Toast.makeText(this, R.string.fragment_add_public_chat_invalid_url_message, Toast.LENGTH_SHORT).show() }
|
if (!Patterns.WEB_URL.matcher(url).matches() || !url.startsWith("https://")) { return Toast.makeText(this, R.string.fragment_add_public_chat_invalid_url_message, Toast.LENGTH_SHORT).show() }
|
||||||
|
|
||||||
setButtonEnabled(false)
|
setButtonEnabled(false)
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.loki
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.database.ContentObserver
|
import android.database.ContentObserver
|
||||||
|
import android.text.TextUtils
|
||||||
import nl.komponents.kovenant.Promise
|
import nl.komponents.kovenant.Promise
|
||||||
import nl.komponents.kovenant.functional.bind
|
import nl.komponents.kovenant.functional.bind
|
||||||
import nl.komponents.kovenant.functional.map
|
import nl.komponents.kovenant.functional.map
|
||||||
@ -10,7 +11,9 @@ import org.thoughtcrime.securesms.crypto.IdentityKeyUtil
|
|||||||
import org.thoughtcrime.securesms.database.DatabaseContentProviders
|
import org.thoughtcrime.securesms.database.DatabaseContentProviders
|
||||||
import org.thoughtcrime.securesms.database.DatabaseFactory
|
import org.thoughtcrime.securesms.database.DatabaseFactory
|
||||||
import org.thoughtcrime.securesms.groups.GroupManager
|
import org.thoughtcrime.securesms.groups.GroupManager
|
||||||
|
import org.thoughtcrime.securesms.util.GroupUtil
|
||||||
import org.thoughtcrime.securesms.util.TextSecurePreferences
|
import org.thoughtcrime.securesms.util.TextSecurePreferences
|
||||||
|
import org.thoughtcrime.securesms.util.Util
|
||||||
import org.whispersystems.signalservice.loki.api.LokiGroupChat
|
import org.whispersystems.signalservice.loki.api.LokiGroupChat
|
||||||
import org.whispersystems.signalservice.loki.api.LokiGroupChatAPI
|
import org.whispersystems.signalservice.loki.api.LokiGroupChatAPI
|
||||||
import java.util.HashSet
|
import java.util.HashSet
|
||||||
@ -56,10 +59,13 @@ class LokiPublicChatManager(private val context: Context) {
|
|||||||
threadID = result.threadId
|
threadID = result.threadId
|
||||||
}
|
}
|
||||||
DatabaseFactory.getLokiThreadDatabase(context).setGroupChat(chat, threadID)
|
DatabaseFactory.getLokiThreadDatabase(context).setGroupChat(chat, threadID)
|
||||||
startPollersIfNeeded()
|
|
||||||
|
|
||||||
// Set our name on the server
|
// Set our name on the server
|
||||||
ApplicationContext.getInstance(context).lokiGroupChatAPI?.setDisplayName(server, TextSecurePreferences.getProfileName(context))
|
val displayName = TextSecurePreferences.getProfileName(context)
|
||||||
|
if (!TextUtils.isEmpty(displayName)) {
|
||||||
|
ApplicationContext.getInstance(context).lokiGroupChatAPI?.setDisplayName(server, displayName)
|
||||||
|
}
|
||||||
|
// Start polling
|
||||||
|
Util.runOnMain{ startPollersIfNeeded() }
|
||||||
|
|
||||||
return chat
|
return chat
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user