Support for invite links (AND-90)

This commit is contained in:
Grishka
2024-01-03 23:51:35 +03:00
parent 5d7c37262e
commit 48f9aabaf7
19 changed files with 559 additions and 58 deletions

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<selector>
<item android:state_enabled="true">
<shape>
<corners android:topLeftRadius="4dp" android:topRightRadius="4dp"/>
<solid android:color="?colorM3SurfaceVariant"/>
</shape>
</item>
<item>
<shape android:tint="?colorM3OnSurface">
<corners android:topLeftRadius="4dp" android:topRightRadius="4dp"/>
<solid android:color="#0a000000"/>
</shape>
</item>
</selector>
</item>
<item android:left="-3dp" android:top="-3dp" android:right="-3dp">
<selector>
<item android:state_focused="true">
<shape>
<stroke android:color="?colorM3Primary" android:width="2dp"/>
</shape>
</item>
<item>
<shape>
<stroke android:color="?colorM3OnSurfaceVariant" android:width="1dp"/>
</shape>
</item>
</selector>
</item>
</layer-list>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<corners android:topLeftRadius="4dp" android:topRightRadius="4dp" />
<solid android:color="?colorM3SurfaceVariant" />
</shape>
</item>
<item android:left="-3dp" android:right="-3dp" android:top="-3dp">
<shape>
<stroke
android:width="2dp"
android:color="?colorM3Error" />
</shape>
</item>
</layer-list>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M4,20Q3.175,20 2.588,19.413Q2,18.825 2,18V14Q2.825,14 3.413,13.412Q4,12.825 4,12Q4,11.175 3.413,10.587Q2.825,10 2,10V6Q2,5.175 2.588,4.588Q3.175,4 4,4H20Q20.825,4 21.413,4.588Q22,5.175 22,6V10Q21.175,10 20.587,10.587Q20,11.175 20,12Q20,12.825 20.587,13.412Q21.175,14 22,14V18Q22,18.825 21.413,19.413Q20.825,20 20,20ZM4,18H20V15.45Q19.075,14.9 18.538,13.988Q18,13.075 18,12Q18,10.925 18.538,10.012Q19.075,9.1 20,8.55V6H4V8.55Q4.925,9.1 5.463,10.012Q6,10.925 6,12Q6,13.075 5.463,13.988Q4.925,14.9 4,15.45ZM12,17Q12.425,17 12.713,16.712Q13,16.425 13,16Q13,15.575 12.713,15.287Q12.425,15 12,15Q11.575,15 11.288,15.287Q11,15.575 11,16Q11,16.425 11.288,16.712Q11.575,17 12,17ZM12,13Q12.425,13 12.713,12.712Q13,12.425 13,12Q13,11.575 12.713,11.287Q12.425,11 12,11Q11.575,11 11.288,11.287Q11,11.575 11,12Q11,12.425 11.288,12.712Q11.575,13 12,13ZM12,9Q12.425,9 12.713,8.712Q13,8.425 13,8Q13,7.575 12.713,7.287Q12.425,7 12,7Q11.575,7 11.288,7.287Q11,7.575 11,8Q11,8.425 11.288,8.712Q11.575,9 12,9ZM12,12Q12,12 12,12Q12,12 12,12Q12,12 12,12Q12,12 12,12Q12,12 12,12Q12,12 12,12Q12,12 12,12Q12,12 12,12Z"/>
</vector>

View File

@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="24dp"
android:paddingTop="24dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textAppearance="@style/m3_headline_small"
android:textColor="?colorM3OnSurface"
android:drawableTop="@drawable/ic_confirmation_number_24px"
android:drawableTint="?colorM3Secondary"
android:drawablePadding="16dp"
android:text="@string/enter_invite_link"/>
<TextView
android:id="@+id/subtitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:textAppearance="@style/m3_body_medium"
android:textColor="?colorM3OnSurfaceVariant"
tools:text="@string/need_invite_to_join_server"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="76dp"
android:layout_marginTop="16dp">
<EditText
android:id="@+id/edit"
android:layout_width="match_parent"
android:layout_height="56dp"
android:background="@drawable/bg_m3_filled_text_field"
android:paddingHorizontal="16dp"
android:textColorHint="?colorM3OnSurfaceVariant"
android:textColor="?colorM3OnSurface"
android:gravity="start|bottom"
android:paddingBottom="8dp"
android:singleLine="true"
android:inputType="textUri"
android:textAppearance="@style/m3_body_large"
android:hint="example.social/invite/AbC123"/>
<TextView
android:id="@+id/label"
android:layout_width="match_parent"
android:layout_height="16dp"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="8dp"
android:layout_gravity="top"
android:paddingEnd="23dp"
android:textAppearance="@style/m3_body_small"
android:textColor="?colorM3OnSurfaceVariant"
android:singleLine="true"
android:ellipsize="end"
android:text="@string/server_url"/>
<TextView
android:id="@+id/supporting_text"
android:layout_width="match_parent"
android:layout_height="16dp"
android:layout_marginHorizontal="16dp"
android:layout_gravity="bottom"
android:textAppearance="@style/m3_body_small"
android:textColor="?colorM3OnSurfaceVariant"
android:singleLine="true"
android:ellipsize="end"
android:text=""/>
<ImageButton
android:id="@+id/clear"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginTop="4dp"
android:layout_gravity="end|top"
android:src="@drawable/ic_m3_cancel"
android:background="?android:actionBarItemBackground"
android:contentDescription="@string/clear"/>
</FrameLayout>
</LinearLayout>

View File

@@ -125,25 +125,15 @@
android:orientation="vertical"
android:background="@drawable/bg_onboarding_panel">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="8dp"
android:textAppearance="@style/m3_body_small"
android:textColor="?colorM3OnSurfaceVariant"
android:text="@string/signup_random_server_explain"/>
<Button
android:id="@+id/btn_random_instance"
android:id="@+id/btn_use_invite"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="8dp"
style="@style/Widget.Mastodon.M3.Button.Text"
android:text="@string/pick_server_for_me"/>
android:text="@string/use_invite_link"/>
<Button
android:id="@+id/btn_next"

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ProgressBar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ProgressBar>

View File

@@ -30,4 +30,6 @@
<item name="server_about" type="id"/>
<item name="server_rules" type="id"/>
<item name="button_progress_orig_color" type="id"/>
</resources>

View File

@@ -332,7 +332,6 @@
<string name="login_title">Welcome Back</string>
<string name="login_subtitle">Log in with the server where you created your account.</string>
<string name="server_url">Server URL</string>
<string name="signup_random_server_explain">Well pick a server based on your language if you continue without making a selection.</string>
<string name="server_filter_any_language">Any Language</string>
<string name="server_filter_instant_signup">Instant Sign-up</string>
<string name="server_filter_manual_review">Manual Review</string>
@@ -346,7 +345,6 @@
<string name="not_accepting_new_members">Not accepting new members</string>
<string name="category_special_interests">Special Interests</string>
<string name="signup_passwords_dont_match">Passwords dont match</string>
<string name="pick_server_for_me">Pick for me</string>
<string name="profile_add_row">Add row</string>
<string name="profile_setup">Profile setup</string>
<string name="profile_setup_subtitle">You can always complete this later in the Profile tab.</string>
@@ -670,4 +668,15 @@
<string name="button_reblogged">Boosted</string>
<string name="button_favorited">Favorited</string>
<string name="bookmarked">Bookmarked</string>
<string name="join_server_x_with_invite">Join %s with invite</string>
<string name="expired_invite_link">Expired invite link</string>
<string name="expired_clipboard_invite_link_alert">The invite link for %1$s in your clipboard has expired and cannot be used to sign up.\n\nYou can request a new link from an existing user, sign up through %2$s, or pick another server to sign up through.</string>
<string name="invalid_invite_link">Invalid invite link</string>
<string name="invalid_clipboard_invite_link_alert">The invite link for %1$s in your clipboard is not valid and cannot be used to sign up.\n\nYou can request a new link from an existing user, sign up through %2$s, or pick another server to sign up through.</string>
<string name="use_invite_link">Use invite link</string>
<string name="enter_invite_link">Enter invite link</string>
<string name="this_invite_is_invalid">This invite link is not valid.</string>
<string name="this_invite_has_expired">This invite link has expired.</string>
<string name="invite_link_pasted">Link pasted from your clipboard.</string>
<string name="need_invite_to_join_server">To join %s, youll need an invite link from an existing user.</string>
</resources>