New internal testing flag and V1 group creation button. All menus create GV1.

master
Alan Evans 2020-05-29 15:19:47 -03:00 committed by Greyson Parrelli
parent 9b32eaeb8a
commit b9f11dafff
7 changed files with 53 additions and 15 deletions

View File

@ -251,7 +251,11 @@ public final class ContactSelectionListFragment extends Fragment
RecyclerViewConcatenateAdapterStickyHeader concatenateAdapter = new RecyclerViewConcatenateAdapterStickyHeader();
if (listCallback != null && FeatureFlags.newGroupUI()) {
headerAdapter = new FixedViewsAdapter(createNewGroupItem(listCallback));
if (FeatureFlags.groupsV2create() && FeatureFlags.groupsV2internalTest()) {
headerAdapter = new FixedViewsAdapter(createNewGroupItem(listCallback), createNewGroupsV1GroupItem(listCallback));
} else {
headerAdapter = new FixedViewsAdapter(createNewGroupItem(listCallback));
}
headerAdapter.hide();
concatenateAdapter.addAdapter(headerAdapter);
}
@ -288,7 +292,14 @@ public final class ContactSelectionListFragment extends Fragment
private View createNewGroupItem(@NonNull ListCallback listCallback) {
View view = LayoutInflater.from(requireContext())
.inflate(R.layout.contact_selection_new_group_item, (ViewGroup) requireView(), false);
view.setOnClickListener(v -> listCallback.onNewGroup());
view.setOnClickListener(v -> listCallback.onNewGroup(false));
return view;
}
private View createNewGroupsV1GroupItem(@NonNull ListCallback listCallback) {
View view = LayoutInflater.from(requireContext())
.inflate(R.layout.contact_selection_new_group_v1_item, (ViewGroup) requireView(), false);
view.setOnClickListener(v -> listCallback.onNewGroup(true));
return view;
}
@ -592,7 +603,7 @@ public final class ContactSelectionListFragment extends Fragment
public interface ListCallback {
void onInvite();
void onNewGroup();
void onNewGroup(boolean forceV1);
}
public interface ScrollCallback {

View File

@ -78,7 +78,7 @@ public class MainNavigator {
}
public void goToGroupCreation() {
activity.startActivity(CreateGroupActivity.newIntent(activity));
activity.startActivity(CreateGroupActivity.newIntent(activity, true));
}
public void goToInvite() {

View File

@ -83,10 +83,10 @@ public class NewConversationActivity extends ContactSelectionActivity
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case android.R.id.home: super.onBackPressed(); return true;
case R.id.menu_refresh: handleManualRefresh(); return true;
case R.id.menu_new_group: handleCreateGroup(); return true;
case R.id.menu_invite: handleInvite(); return true;
case android.R.id.home: super.onBackPressed(); return true;
case R.id.menu_refresh: handleManualRefresh(); return true;
case R.id.menu_new_group: handleCreateGroup(true); return true;
case R.id.menu_invite: handleInvite(); return true;
}
return false;
@ -97,8 +97,8 @@ public class NewConversationActivity extends ContactSelectionActivity
onRefresh();
}
private void handleCreateGroup() {
startActivity(CreateGroupActivity.newIntent(this));
private void handleCreateGroup(boolean forceV1) {
startActivity(CreateGroupActivity.newIntent(this, forceV1));
}
private void handleInvite() {
@ -121,8 +121,8 @@ public class NewConversationActivity extends ContactSelectionActivity
}
@Override
public void onNewGroup() {
handleCreateGroup();
public void onNewGroup(boolean forceV1) {
handleCreateGroup(forceV1);
finish();
}
}

View File

@ -29,8 +29,8 @@ public class CreateGroupActivity extends ContactSelectionActivity {
private View next;
public static Intent newIntent(@NonNull Context context) {
if (!FeatureFlags.newGroupUI() || !FeatureFlags.groupsV2create()) {
public static Intent newIntent(@NonNull Context context, boolean forceV1) {
if (forceV1 || !FeatureFlags.newGroupUI() || !FeatureFlags.groupsV2create()) {
return new Intent(context, GroupCreateActivity.class);
}

View File

@ -66,6 +66,7 @@ public final class FeatureFlags {
private static final String GROUPS_V2 = "android.groupsv2";
private static final String GROUPS_V2_CREATE = "android.groupsv2.create";
private static final String GROUPS_V2_CAPACITY = "android.groupsv2.capacity";
private static final String GROUPS_V2_INTERNAL_TEST = "android.groupsv2.internalTest";
/**
* We will only store remote values for flags in this set. If you want a flag to be controllable
@ -89,7 +90,8 @@ public final class FeatureFlags {
GROUPS_V2,
GROUPS_V2_CREATE,
GROUPS_V2_CAPACITY,
NEW_GROUP_UI
NEW_GROUP_UI,
GROUPS_V2_INTERNAL_TEST
);
/**
@ -292,6 +294,11 @@ public final class FeatureFlags {
return getInteger(GROUPS_V2_CAPACITY, 100);
}
/** Groups v2 UI for internal testing. */
public static boolean groupsV2internalTest() {
return groupsV2() && getBoolean(GROUPS_V2_INTERNAL_TEST, false);
}
/** Only for rendering debug info. */
public static synchronized @NonNull Map<String, Object> getMemoryValues() {
return new TreeMap<>(REMOTE_VALUES);

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
style="@style/Signal.Text.Body"
android:layout_width="match_parent"
android:layout_height="@dimen/contact_selection_item_height"
android:drawablePadding="16dp"
android:ellipsize="marquee"
android:fontFamily="sans-serif-medium"
android:gravity="center_vertical|start"
android:labelFor="@id/action_icon"
android:paddingStart="@dimen/selection_item_header_width"
android:singleLine="true"
android:text="@string/contact_selection_activity__new_gv1_group"
android:textAlignment="viewStart"
app:drawableStartCompat="?attr/contact_selection_new_group_icon"
tools:ignore="RtlSymmetry" />

View File

@ -1353,6 +1353,8 @@
<string name="contact_selection_activity__enter_name_or_number">Enter name or number</string>
<string name="contact_selection_activity__invite_to_signal">Invite to Signal</string>
<string name="contact_selection_activity__new_group">New group</string>
<!-- temporary for internal testing -->
<string name="contact_selection_activity__new_gv1_group" translatable="false">New old style group (GV1)</string>
<!-- contact_filter_toolbar -->
<string name="contact_filter_toolbar__clear_entered_text_description">Clear entered text</string>