1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package fr.plnech.dunbar.ui
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.NotificationManagerCompat
import androidx.recyclerview.widget.LinearLayoutManager
import fr.plnech.dunbar.R
import fr.plnech.dunbar.data.Messages
import fr.plnech.dunbar.fetchFriends
import fr.plnech.dunbar.model.Friend
import fr.plnech.dunbar.notif.FriendReminder
import fr.plnech.dunbar.plural
import kotlinx.android.synthetic.main.activity_friends.*
import kotlinx.android.synthetic.main.content_friends.*
import java.util.*
class FriendsActivity : AppCompatActivity() {
private lateinit var messages: Messages
private var friends = listOf<Friend>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_friends)
setSupportActionBar(toolbar)
// messages = Messages(applicationContext)
fab.setOnClickListener { view ->
reloadFriends()
notifyFriend()
}
reloadFriends()
notifyFriend()
}
private fun notifyFriend() {
val idNotif = 0
val notRecentlyTalked = friends.filter {
it.lastDate != null && (Date().time - it.lastDate!!.time) > 1 * 60 * 60 * 1000
}
println("${notRecentlyTalked.size} good old friends I could talk to.")
val friend = notRecentlyTalked.minBy { it.timesContacted }
friend?.let {
with(NotificationManagerCompat.from(this)) {
val notification =
FriendReminder(applicationContext).createNotification(
friend,
this@FriendsActivity
)
notification?.let {
notify(idNotif, notification)
}
}
}
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.menu_main, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
return when (item.itemId) {
R.id.action_settings -> true
else -> super.onOptionsItemSelected(item)
}
}
private fun reloadFriends() {
friends = fetchFriends()
displayFriends()
// fetchMessages()
}
private fun fetchMessages() {
messages.fetchAll()
Toast.makeText(
this, "${messages.sent.size} messages sent, " +
"${messages.inbox.size} messages received.", Toast.LENGTH_SHORT
).show()
}
private fun displayFriends() {
val adapter = FriendsAdapter(friends)
val nbFriends = adapter.itemCount
friendsList.layoutManager = LinearLayoutManager(this)
friendsList.setHasFixedSize(true)
friendsList.adapter = adapter
welcomeTitle.text = "$nbFriends ${"friend".plural(nbFriends)} on Dunbar"
}
}