Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5544abf

Browse files
committed
Kotlin
Change-Id: I1ce1e066f7735bfa5a815668ac3a4a56de97b209
1 parent 98248d4 commit 5544abf

20 files changed

+418
-31
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.google.firebase.dynamicinvites.kotlin.model
2+
3+
import android.net.Uri
4+
5+
// [START ddl_invite_content]
6+
/**
7+
* The content of an invitation, with optional fields to accommodate all presenters.
8+
* This type could be modified to also include an image, for sending invites over email.
9+
*/
10+
data class InviteContent(
11+
/** The subject of the message. Not used for invites without subjects, like SMS. */
12+
val subject: String?,
13+
/** The body of the message. Indispensable content should go here. */
14+
val body: String?,
15+
/** The URL containing the link to invite. In link-copy cases, only this field will be used. */
16+
val link: Uri)
17+
// [END ddl_invite_content]
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.google.firebase.dynamicinvites.kotlin.presenter
2+
3+
import android.content.Context
4+
import android.widget.Toast
5+
6+
import com.google.firebase.dynamicinvites.R
7+
import com.google.firebase.dynamicinvites.kotlin.model.InviteContent
8+
9+
class CopyPresenter(isAvailable: Boolean, content: InviteContent)
10+
: InvitePresenter("Copy Link", R.drawable.ic_content_copy_black_24dp, isAvailable, content) {
11+
12+
override fun sendInvite(context: Context) {
13+
super.sendInvite(context)
14+
Toast.makeText(context, "TODO: Implement link copying", Toast.LENGTH_SHORT).show()
15+
}
16+
17+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.google.firebase.dynamicinvites.kotlin.presenter
2+
3+
import android.content.Context
4+
import android.widget.Toast
5+
6+
import com.google.firebase.dynamicinvites.R
7+
import com.google.firebase.dynamicinvites.kotlin.model.InviteContent
8+
9+
class EmailPresenter(isAvailable: Boolean, content: InviteContent)
10+
: InvitePresenter("Email", R.drawable.ic_email_black_24dp, isAvailable, content) {
11+
12+
override fun sendInvite(context: Context) {
13+
super.sendInvite(context)
14+
Toast.makeText(context, "TODO: Implement email sending", Toast.LENGTH_SHORT).show()
15+
}
16+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.google.firebase.dynamicinvites.kotlin.presenter
2+
3+
import android.content.Context
4+
import android.support.annotation.DrawableRes
5+
6+
import com.google.firebase.dynamicinvites.kotlin.model.InviteContent
7+
8+
// [START ddl_invite_presenter]
9+
10+
/**
11+
* Presents the invite using a specific method, such as email or social.
12+
*/
13+
open class InvitePresenter(
14+
/** The user-visible name of the invite method, like 'Email' or 'SMS' */
15+
val name: String,
16+
/** An icon representing the invite method. */
17+
@param:DrawableRes @field:DrawableRes
18+
val icon: Int,
19+
/** Whether or not the method is available on this device. For example, SMS is phone only. */
20+
val isAvailable: Boolean,
21+
/** The Content of the invitation */
22+
val content: InviteContent)
23+
{
24+
/**
25+
* Send the invitation using the specified method.
26+
*/
27+
open fun sendInvite(context: Context) {
28+
// ...
29+
}
30+
}
31+
// [END ddl_invite_presenter]
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.google.firebase.dynamicinvites.kotlin.presenter
2+
3+
import android.content.Context
4+
import android.widget.Toast
5+
6+
import com.google.firebase.dynamicinvites.R
7+
import com.google.firebase.dynamicinvites.kotlin.model.InviteContent
8+
9+
class MessagePresenter(isAvailable: Boolean, content: InviteContent)
10+
: InvitePresenter("Message", R.drawable.ic_sms_black_24dp, isAvailable, content) {
11+
12+
override fun sendInvite(context: Context) {
13+
super.sendInvite(context)
14+
Toast.makeText(context, "TODO: Implement SMS", Toast.LENGTH_SHORT).show()
15+
}
16+
17+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.google.firebase.dynamicinvites.kotlin.presenter
2+
3+
import android.content.Context
4+
import android.content.Intent
5+
import android.net.Uri
6+
7+
import com.google.firebase.dynamicinvites.R
8+
import com.google.firebase.dynamicinvites.kotlin.model.InviteContent
9+
import com.google.firebase.dynamicinvites.util.DynamicLinksUtil
10+
11+
class MorePresenter(isAvailable: Boolean, content: InviteContent)
12+
: InvitePresenter("More", R.drawable.ic_more_horiz_black_24dp, isAvailable, content) {
13+
14+
override fun sendInvite(context: Context) {
15+
super.sendInvite(context)
16+
val link = DynamicLinksUtil.generateContentLink()
17+
18+
val intent = Intent(Intent.ACTION_SEND)
19+
intent.type = "text/plain"
20+
intent.putExtra(Intent.EXTRA_TEXT, link.toString())
21+
22+
context.startActivity(Intent.createChooser(intent, "Share Link"))
23+
}
24+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.google.firebase.dynamicinvites.kotlin.presenter
2+
3+
import android.content.Context
4+
import android.widget.Toast
5+
6+
import com.google.firebase.dynamicinvites.R
7+
import com.google.firebase.dynamicinvites.kotlin.model.InviteContent
8+
9+
class SocialPresenter(isAvailable: Boolean, content: InviteContent)
10+
: InvitePresenter("Social", R.drawable.ic_people_black_24dp, isAvailable, content) {
11+
12+
override fun sendInvite(context: Context) {
13+
super.sendInvite(context)
14+
Toast.makeText(context, "TODO: Implement social sending", Toast.LENGTH_SHORT).show()
15+
}
16+
17+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.google.firebase.dynamicinvites.kotlin.util
2+
3+
import android.net.Uri
4+
5+
import com.google.firebase.dynamicinvites.kotlin.model.InviteContent
6+
import com.google.firebase.dynamiclinks.DynamicLink
7+
import com.google.firebase.dynamiclinks.FirebaseDynamicLinks
8+
9+
object DynamicLinksUtil {
10+
11+
fun generateInviteContent(): InviteContent {
12+
return InviteContent(
13+
"Hey check out my great app!",
14+
"It's like the best app ever.",
15+
generateContentLink())
16+
}
17+
18+
fun generateContentLink(): Uri {
19+
// [START ddl_generate_content_link[
20+
val baseUrl = Uri.parse("https://your-custom-name.page.link")
21+
val domain = "https://your-app.page.link"
22+
23+
val link = FirebaseDynamicLinks.getInstance()
24+
.createDynamicLink()
25+
.setLink(baseUrl)
26+
.setDomainUriPrefix(domain)
27+
.setIosParameters(DynamicLink.IosParameters.Builder("com.your.bundleid").build())
28+
.setAndroidParameters(DynamicLink.AndroidParameters.Builder("com.your.packageName").build())
29+
.buildDynamicLink()
30+
31+
return link.uri
32+
// [END ddl_generate_content_link[
33+
}
34+
35+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.google.firebase.dynamicinvites.kotlin.view
2+
3+
import android.os.Bundle
4+
import android.support.v7.app.AppCompatActivity
5+
import android.view.View
6+
7+
import com.google.firebase.dynamicinvites.R
8+
import com.google.firebase.dynamicinvites.presenter.InvitePresenter
9+
import kotlinx.android.synthetic.main.activity_advanced.button_share
10+
11+
class AdvancedActivity : AppCompatActivity(), ShareDialogFragment.Listener {
12+
13+
override fun onCreate(savedInstanceState: Bundle?) {
14+
super.onCreate(savedInstanceState)
15+
setContentView(R.layout.activity_advanced)
16+
17+
button_share.setOnClickListener {
18+
ShareDialogFragment.newInstance().show(supportFragmentManager, "dialog")
19+
}
20+
}
21+
22+
override fun onItemClicked(presenter: InvitePresenter) {
23+
presenter.sendInvite(this)
24+
}
25+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.google.firebase.dynamicinvites.kotlin.view
2+
3+
import android.content.Intent
4+
import android.os.Bundle
5+
import android.support.v7.app.AppCompatActivity
6+
import com.google.firebase.dynamicinvites.util.DynamicLinksUtil
7+
import kotlinx.android.synthetic.main.activity_main.button_share
8+
9+
class MainActivity : AppCompatActivity() {
10+
11+
override fun onCreate(savedInstanceState: Bundle?) {
12+
super.onCreate(savedInstanceState)
13+
setContentView(R.layout.activity_main)
14+
15+
button_share.setOnClickListener {
16+
onShareClicked()
17+
}
18+
}
19+
20+
private fun onShareClicked() {
21+
val link = DynamicLinksUtil.generateContentLink()
22+
23+
val intent = Intent(Intent.ACTION_SEND)
24+
intent.type = "text/plain"
25+
intent.putExtra(Intent.EXTRA_TEXT, link.toString())
26+
27+
startActivity(Intent.createChooser(intent, "Share Link"))
28+
}
29+
}

0 commit comments

Comments
 (0)