Skip to content

Commit

Permalink
Update gradle, kotlin, and dependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
TristanWiley committed Sep 28, 2018
1 parent a166e9d commit d1ab945
Show file tree
Hide file tree
Showing 22 changed files with 136 additions and 99 deletions.
24 changes: 12 additions & 12 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ repositories {
}

android {
compileSdkVersion 26
buildToolsVersion '27.0.3'
compileSdkVersion 27
buildToolsVersion '28.0.2'
defaultConfig {
applicationId 'com.tristanwiley.chatse'
minSdkVersion 16
targetSdkVersion 26
targetSdkVersion 27
versionCode 1
versionName "1.0"

Expand Down Expand Up @@ -52,20 +52,20 @@ dependencies {
implementation('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
transitive = true
}
implementation 'com.android.support:design:26.1.0'
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:recyclerview-v7:26.1.0'
implementation 'com.android.support:cardview-v7:26.1.0'
implementation 'com.android.support:palette-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.android.support:design:27.1.1'
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:recyclerview-v7:27.1.1'
implementation 'com.android.support:cardview-v7:27.1.1'
implementation 'com.android.support:palette-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.squareup.okhttp:okhttp:2.4.0'
implementation 'com.squareup.okhttp:okhttp-ws:2.4.0'
implementation 'org.jetbrains.anko:anko-commons:0.10.1'
implementation 'org.jetbrains.anko:anko-commons:0.10.4'
implementation 'org.jsoup:jsoup:1.10.2'
implementation 'org.codehaus.jackson:jackson-mapper-asl:1.8.5'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.9.7'
implementation 'org.unbescape:unbescape:1.1.1.RELEASE'
implementation 'com.orhanobut:dialogplus:1.11@aar'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'me.saket:better-link-movement-method:1.2'
implementation 'com.github.gabrielemariotti.changeloglib:changelog:2.1.0'
implementation 'com.github.bumptech.glide:glide:4.0.0'
Expand Down
Binary file added app/debug/app-debug.apk
Binary file not shown.
1 change: 1 addition & 0 deletions app/debug/output.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"app-debug.apk","fullName":"debug","baseName":"debug"},"path":"app-debug.apk","properties":{}}]
13 changes: 13 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,16 @@
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

# Proguard configuration for Jackson 2.x
-keep class com.fasterxml.jackson.databind.ObjectMapper {
public <methods>;
protected <methods>;
}
-keep class com.fasterxml.jackson.databind.ObjectWriter {
public ** writeValueAsString(**);
}
-keepnames class com.fasterxml.jackson.** { *; }
-dontwarn com.fasterxml.jackson.databind.**

-dontwarn okio.**
Binary file added app/release/app-release.apk
Binary file not shown.
1 change: 1 addition & 0 deletions app/release/output.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,14 @@ class AboutDevCardAdapter(mContext: Context, val data: ArrayList<DevPoko>) : Rec

private val li: LayoutInflater = LayoutInflater.from(mContext)

override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): AboutDevCardAdapter.ViewHolder {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val itemView: View = li.inflate(R.layout.card_about, parent, false)

return ViewHolder(itemView)
}

override fun onBindViewHolder(holder: AboutDevCardAdapter.ViewHolder?, position: Int) {
holder?.bind(data[position])
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(data[position])
}

override fun getItemCount(): Int = data.size
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,14 @@ class AboutIconAdapter(mContext: Context, val data: ArrayList<AboutIconPoko>) :

private val li: LayoutInflater = LayoutInflater.from(mContext)

override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): AboutIconAdapter.ViewHolder {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val itemView: View = li.inflate(R.layout.item_about_app, parent, false)

return ViewHolder(itemView)
}

override fun onBindViewHolder(holder: AboutIconAdapter.ViewHolder?, position: Int) {
holder?.bind(data[position])
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(data[position])
}

override fun getItemCount(): Int = data.size
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,14 @@ class AboutVerticalIconAdapter(mContext: Context, val data: ArrayList<AboutIconP

private val li: LayoutInflater = LayoutInflater.from(mContext)

override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): AboutVerticalIconAdapter.ViewHolder {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val itemView: View = li.inflate(R.layout.item_about_dev, parent, false)

return ViewHolder(itemView)
}

override fun onBindViewHolder(holder: AboutVerticalIconAdapter.ViewHolder?, position: Int) {
holder?.bind(data[position])
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(data[position])
}

override fun getItemCount(): Int = data.size
Expand Down
59 changes: 33 additions & 26 deletions app/src/main/java/com/tristanwiley/chatse/chat/ChatFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.tristanwiley.chatse.chat

import android.Manifest
import android.app.ActivityManager
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Bitmap
Expand All @@ -27,6 +28,8 @@ import android.widget.EditText
import android.widget.LinearLayout
import android.widget.TextView
import android.widget.Toast
import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.databind.ObjectMapper
import com.orhanobut.dialogplus.DialogPlus
import com.orhanobut.dialogplus.GridHolder
import com.squareup.okhttp.FormEncodingBuilder
Expand All @@ -43,9 +46,6 @@ import com.tristanwiley.chatse.network.ClientManager
import com.tristanwiley.chatse.stars.StarsActivity
import kotlinx.android.synthetic.main.fragment_chat.view.*
import kotlinx.android.synthetic.main.picker_footer.view.*
import kotlinx.android.synthetic.main.room_item.*
import org.codehaus.jackson.JsonNode
import org.codehaus.jackson.map.ObjectMapper
import org.jetbrains.anko.doAsync
import org.jetbrains.anko.uiThread
import org.json.JSONObject
Expand Down Expand Up @@ -99,24 +99,30 @@ class ChatFragment : Fragment(), IncomingEventListener {
val args = arguments

//Get the fkey from the arguments
chatFkey = args.getString(ChatFragment.Companion.EXTRA_FKEY)
args?.getString(ChatFragment.EXTRA_FKEY)?.let {
chatFkey = it
}

//Get the current ChatRoom from the arguments
room = args.getParcelable(ChatFragment.Companion.EXTRA_ROOM)
args?.getParcelable<ChatRoom>(ChatFragment.EXTRA_ROOM)?.let {
room = it
}

//Get the roomName from the arguments
roomName = args.getString(ChatFragment.Companion.EXTRA_NAME)
args?.getString(ChatFragment.EXTRA_NAME)?.let {
roomName = it
}

if (room.site == Client.SITE_STACK_OVERFLOW) {
//Set the multitasking color to orange
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.setTaskDescription(ActivityManager.TaskDescription((activity as AppCompatActivity).supportActionBar?.title.toString(), ActivityManager.TaskDescription().icon, ContextCompat.getColor(activity, R.color.stackoverflow_orange)))
(activity as ChatActivity).setTaskDescription(ActivityManager.TaskDescription((activity as AppCompatActivity).supportActionBar?.title.toString(), ActivityManager.TaskDescription().icon, ContextCompat.getColor(activity as ChatActivity, R.color.stackoverflow_orange)))
}

} else if (room.site == Client.SITE_STACK_EXCHANGE) {
//Set the multitasking color to blue
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.setTaskDescription(ActivityManager.TaskDescription((activity as AppCompatActivity).supportActionBar?.title.toString(), ActivityManager.TaskDescription().icon, ContextCompat.getColor(activity, R.color.stackexchange_blue)))
(activity as ChatActivity).setTaskDescription(ActivityManager.TaskDescription((activity as AppCompatActivity).supportActionBar?.title.toString(), ActivityManager.TaskDescription().icon, ContextCompat.getColor(activity as ChatActivity, R.color.stackexchange_blue)))
}
}
//Set the EventList by the room number
Expand All @@ -135,13 +141,13 @@ class ChatFragment : Fragment(), IncomingEventListener {
if (room.site == Client.SITE_STACK_OVERFLOW) {
//Check version and set status bar color, theme already defaulted to SO
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.window.statusBarColor = ContextCompat.getColor(activity, R.color.primary_dark)
(activity as ChatActivity).window.statusBarColor = ContextCompat.getColor(activity as ChatActivity, R.color.primary_dark)
}
} else if (room.site == Client.SITE_STACK_EXCHANGE) {
//Set theme to SE and color to SE color
contextThemeWrapper = ContextThemeWrapper(activity, R.style.AppTheme_SE)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.window.statusBarColor = ContextCompat.getColor(activity, R.color.se_primary_dark)
(activity as ChatActivity).window.statusBarColor = ContextCompat.getColor(activity as ChatActivity, R.color.se_primary_dark)
}
}

Expand All @@ -162,7 +168,7 @@ class ChatFragment : Fragment(), IncomingEventListener {
dialog = DialogPlus.newDialog(activity)
.setContentHolder(GridHolder(2))
.setGravity(Gravity.CENTER)
.setAdapter(UploadImageAdapter(activity))
.setAdapter(UploadImageAdapter(activity as ChatActivity))
.setOnItemClickListener { _, _, _, position ->
when (position) {
0 -> {
Expand All @@ -173,9 +179,9 @@ class ChatFragment : Fragment(), IncomingEventListener {
1 -> {
//When you click on the gallery button, open a camera intent and get the result in onActivityResult
//Request external storage permission
if (ContextCompat.checkSelfPermission(activity, android.Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
if (ContextCompat.checkSelfPermission(activity as ChatActivity, android.Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
ActivityCompat.requestPermissions(activity, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), 0)
ActivityCompat.requestPermissions(activity as ChatActivity, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), 0)
} else {
openFileChooser()
}
Expand All @@ -200,18 +206,18 @@ class ChatFragment : Fragment(), IncomingEventListener {
//Set all variables from layout
input = view.findViewById(R.id.chat_input_text)
messageList = view.findViewById(R.id.chat_message_list)
userList = activity.findViewById(R.id.room_users)
userList = (activity as ChatActivity).findViewById(R.id.room_users)
loadMessagesLayout = view.findViewById(R.id.load_messages_layout)

messageAdapter = MessageAdapter(activity, events, chatFkey, room)
usersAdapter = UsersAdapter(activity, events)
messageAdapter = MessageAdapter(activity as ChatActivity, events, chatFkey, room)
usersAdapter = UsersAdapter(activity as ChatActivity, events)
messageList.layoutManager = LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, true)
messageList.adapter = messageAdapter
// messageList.addItemDecoration(CoreDividerItemDecoration(activity, CoreDividerItemDecoration.VERTICAL_LIST))
userList.layoutManager = LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
userList.adapter = usersAdapter
userList.addItemDecoration(CoreDividerItemDecoration(activity, CoreDividerItemDecoration.Companion.VERTICAL_LIST))

userList.addItemDecoration(CoreDividerItemDecoration(activity as ChatActivity, CoreDividerItemDecoration.Companion.VERTICAL_LIST))
usersAdapter.notifyDataSetChanged()
//When you reach the top and swipe to load more, add 25 to the current loaded amount and load more
loadMessagesLayout.setOnRefreshListener {
currentLoadCount += 25
Expand Down Expand Up @@ -248,7 +254,7 @@ class ChatFragment : Fragment(), IncomingEventListener {

uiThread {
//Create dialog
val builder = AlertDialog.Builder(context)
val builder = AlertDialog.Builder(context as Context)

//Set the dialog title to the room name
builder.setTitle(jsonResult.getString("name"))
Expand All @@ -258,7 +264,7 @@ class ChatFragment : Fragment(), IncomingEventListener {
l.orientation = LinearLayout.VERTICAL

//Get the display density as a variable for use with padding
val dpi = activity.resources.displayMetrics.density.toInt()
val dpi = (activity as ChatActivity).resources.displayMetrics.density.toInt()

//Set the padding of the layout so it looks natural
l.setPadding((19 * dpi), (5 * dpi), (14 * dpi), (5 * dpi))
Expand Down Expand Up @@ -286,7 +292,7 @@ class ChatFragment : Fragment(), IncomingEventListener {
l.addView(roomText)

//Create a FlowLayout (instead of LinearLayout so we can display multiple tags)
val tagsLayout = FlowLayout(context)
val tagsLayout = FlowLayout(context as Context)

//For each tag create a TextView
val tags = Jsoup.parse(jsonResult.getString("tags")).getElementsByClass("tag")
Expand Down Expand Up @@ -321,10 +327,10 @@ class ChatFragment : Fragment(), IncomingEventListener {

//Set the background to a rectangle to look like it does on the web
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
tagview.background = ContextCompat.getDrawable(context, R.drawable.tag_background)
tagview.background = ContextCompat.getDrawable(context as Context, R.drawable.tag_background)
} else {
@Suppress("DEPRECATION")
tagview.setBackgroundDrawable(ContextCompat.getDrawable(context, R.drawable.tag_background))
tagview.setBackgroundDrawable(ContextCompat.getDrawable(context as Context, R.drawable.tag_background))
}

//Add the tag to the layout
Expand Down Expand Up @@ -426,13 +432,14 @@ class ChatFragment : Fragment(), IncomingEventListener {
.mapNotNull { chatEventGenerator.createEvent(it) }
.filter { it.roomId == room.num }
.forEach {
events.addEvent(it, this.activity, room)
events.addEvent(it, (this.activity as ChatActivity), room)
}

//Update adapters so we know to check for new events
activity.runOnUiThread {
(activity as ChatActivity).runOnUiThread {
messageAdapter.update()
usersAdapter.update()
usersAdapter.notifyDataSetChanged()
loadMessagesLayout.isRefreshing = false
}
}
Expand Down Expand Up @@ -504,7 +511,7 @@ class ChatFragment : Fragment(), IncomingEventListener {
var bitmap: Bitmap? = null

return try {
inStream = activity.contentResolver.openInputStream(uri)
inStream = (activity as ChatActivity).contentResolver.openInputStream(uri)
bitmap = BitmapFactory.decodeStream(inStream)
val outStream = ByteArrayOutputStream()
bitmap?.compress(Bitmap.CompressFormat.JPEG, 100, outStream)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,8 @@ import kotlin.collections.ArrayList
*/
class MessageAdapter(private val mContext: Context, private val events: EventList, private val chatFkey: String?, val room: ChatRoom?, private var messages: ArrayList<MessageEvent> = ArrayList()) : RecyclerView.Adapter<MessageAdapter.MessageViewHolder>() {

override fun onBindViewHolder(viewHolder: MessageViewHolder?, pos: Int) {
override fun onBindViewHolder(holder: MessageViewHolder, pos: Int) {
val message = messages[pos]
val holder = viewHolder as MessageAdapter.MessageViewHolder
holder.bindMessage(message)
}

Expand All @@ -70,8 +69,8 @@ class MessageAdapter(private val mContext: Context, private val events: EventLis
this.notifyDataSetChanged()
}

override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): MessageAdapter.MessageViewHolder {
val view = LayoutInflater.from(parent?.context).inflate(R.layout.list_item_message, parent, false)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MessageViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.list_item_message, parent, false)
return MessageAdapter.MessageViewHolder(mContext, view, chatFkey, room)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,16 @@ import org.jetbrains.anko.doAsync
*/
class RoomAdapter(val site: String, val list: MutableList<Room>, val context: Context) : RecyclerView.Adapter<RoomAdapter.ListRowHolder>() {

override fun onBindViewHolder(viewHolder: RoomAdapter.ListRowHolder?, position: Int) {
override fun onBindViewHolder(holder: ListRowHolder, position: Int) {
val room = list[position]
viewHolder?.bindMessage(room)
holder.bindMessage(room)
}

override fun getItemCount() = list.size


override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): RoomAdapter.ListRowHolder {
val view = LayoutInflater.from(parent?.context).inflate(R.layout.drawer_list_item, parent, false)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ListRowHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.drawer_list_item, parent, false)
return RoomAdapter.ListRowHolder(context, view, site)
}

Expand Down
Loading

0 comments on commit d1ab945

Please sign in to comment.