this commit adds issue/pr number to feeds comment, enhance signature by adding fasthub as a link, removed link underline and fixes commit comment update.

This commit is contained in:
Kosh 2017-05-10 21:01:27 +08:00
parent 771d616bea
commit eb80cfb5cd
10 changed files with 97 additions and 52 deletions

View File

@ -3,6 +3,7 @@ package com.fastaccess.provider.markdown;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.webkit.MimeTypeMap;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;

View File

@ -16,6 +16,7 @@ import com.fastaccess.provider.scheme.SchemeParser;
import com.fastaccess.provider.timeline.handler.BetterLinkMovementExtended;
import com.fastaccess.provider.timeline.handler.DrawableHandler;
import com.fastaccess.provider.timeline.handler.ItalicHandler;
import com.fastaccess.provider.timeline.handler.LinkHandler;
import com.fastaccess.provider.timeline.handler.ListsHandler;
import com.fastaccess.provider.timeline.handler.MarginHandler;
import com.fastaccess.provider.timeline.handler.PreTagHandler;
@ -73,6 +74,7 @@ public class HtmlHelper {
mySpanner.registerHandler("del", new StrikethroughHandler());
mySpanner.registerHandler("sub", new SubScriptHandler());
mySpanner.registerHandler("sup", new SuperScriptHandler());
mySpanner.registerHandler("a", new LinkHandler());
TableHandler tableHandler = new TableHandler();
tableHandler.setTextColor(ViewHelper.generateTextColor(windowBackground));
WindowManager windowManager = (WindowManager) textView.getContext().getSystemService(Context.WINDOW_SERVICE);

View File

@ -0,0 +1,23 @@
package com.fastaccess.provider.timeline.handler;
import android.graphics.Color;
import android.text.SpannableStringBuilder;
import com.zzhoujay.markdown.style.LinkSpan;
import net.nightwhistler.htmlspanner.TagNodeHandler;
import org.htmlcleaner.TagNode;
/**
* Created by Kosh on 10 May 2017, 8:46 PM
*/
public class LinkHandler extends TagNodeHandler {
private final static int linkColor = Color.parseColor("#4078C0");
@Override public void handleTagNode(TagNode node, SpannableStringBuilder spannableStringBuilder, int start, int end) {
String href = node.getAttributeByName("href");
spannableStringBuilder.setSpan(new LinkSpan(href, linkColor), start, end, 33);
}
}

View File

@ -56,7 +56,7 @@ public class FeedsViewHolder extends BaseViewHolder<Event> {
EventsType type = eventsModel.getType();
date.setGravity(Gravity.CENTER);
date.setEventsIcon(type.getDrawableRes());
String action = null;
String action;
if (type == EventsType.WatchEvent) {
action = itemView.getResources().getString(type.getType()).toLowerCase();
} else if (type == EventsType.PullRequestEvent) {
@ -115,6 +115,11 @@ public class FeedsViewHolder extends BaseViewHolder<Event> {
if (eventsModel.getPayload().getComment() != null) {
description.setText(eventsModel.getPayload().getComment().getBody());
description.setVisibility(View.VISIBLE);
if (eventsModel.getPayload().getIssue() != null) {
number = "#" + eventsModel.getPayload().getIssue().getNumber();
} else if (eventsModel.getPayload().getPullRequest() != null) {
number = "#" + eventsModel.getPayload().getPullRequest().getNumber();
}
} else if (eventsModel.getPayload().getIssue() != null) {
number = "#" + eventsModel.getPayload().getIssue().getNumber();
description.setText(eventsModel.getPayload().getIssue().getTitle());
@ -131,7 +136,8 @@ public class FeedsViewHolder extends BaseViewHolder<Event> {
description.setText("");
description.setVisibility(View.GONE);
}
spannableBuilder.append(eventsModel.getRepo() != null ? eventsModel.getRepo().getName() : "").append(number);
spannableBuilder.append(eventsModel.getRepo() != null ? eventsModel.getRepo().getName() : "")
.append(number);
title.setText(spannableBuilder);
date.setText(ParseDateFormat.getTimeAgo(eventsModel.getCreatedAt()));
}

View File

@ -63,10 +63,23 @@ public class IssuesViewHolder extends BaseViewHolder<Issue> {
.append(" ");
}
if (!showRepoName) {
builder.append("#")
.append(String.valueOf(issueModel.getNumber())).append(" ")
.append(issueModel.getClosedBy() != null ? issueModel.getClosedBy().getLogin() : issueModel.getUser().getLogin())
.append(" ");
if (issueModel.getState() == IssueState.closed) {
if (issueModel.getClosedBy() == null) {
builder.append("#")
.append(String.valueOf(issueModel.getNumber())).append(" ")
.append(" ");
} else {
builder.append("#")
.append(String.valueOf(issueModel.getNumber())).append(" ")
.append(issueModel.getClosedBy().getLogin())
.append(" ");
}
} else {
builder.append("#")
.append(String.valueOf(issueModel.getNumber())).append(" ")
.append(issueModel.getUser().getLogin())
.append(" ");
}
}
details.setText(builder
.append(itemView.getResources().getString(issueModel.getState().getStatus()).toLowerCase())
@ -80,6 +93,13 @@ public class IssuesViewHolder extends BaseViewHolder<Issue> {
}
}
if (withAvatar && avatarLayout != null) {
if (issueModel.getState() != null) {
if (issueModel.getState() == IssueState.open) {
} else {
}
}
avatarLayout.setUrl(issueModel.getUser().getAvatarUrl(), issueModel.getUser().getLogin());
avatarLayout.setVisibility(View.VISIBLE);
}

View File

@ -28,7 +28,6 @@ import com.fastaccess.ui.widgets.ForegroundImageView;
import com.fastaccess.ui.widgets.dialog.MessageDialogView;
import butterknife.BindView;
import butterknife.OnCheckedChanged;
import butterknife.OnClick;
import butterknife.OnTextChanged;
import icepick.State;
@ -40,6 +39,8 @@ import uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt;
public class EditorActivity extends BaseActivity<EditorMvp.View, EditorPresenter> implements EditorMvp.View {
private String sentFromFastHub;
private CharSequence savedText = "";
@BindView(R.id.view) ForegroundImageView viewCode;
@BindView(R.id.editText) FontEditText editText;
@ -83,8 +84,7 @@ public class EditorActivity extends BaseActivity<EditorMvp.View, EditorPresenter
if (editText.isEnabled() && !InputHelper.isEmpty(editText)) {
editText.setEnabled(false);
sentVia.setEnabled(false);
MarkDownProvider.setMdText(editText, InputHelper.toString(editText) +
(sentVia.isChecked() ? "\n\n_"+sentVia.getText().toString()+"_" : ""));
MarkDownProvider.setMdText(editText, InputHelper.toString(editText));
ViewHelper.hideKeyboard(editText);
AnimHelper.animateVisibility(editorIconsHolder, false);
} else {
@ -115,8 +115,10 @@ public class EditorActivity extends BaseActivity<EditorMvp.View, EditorPresenter
@Override protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sentFromFastHub = "\n\n_" + getString(R.string.sent_from_fasthub, AppHelper.getDeviceName(), "",
"[" + getString(R.string.app_name) + "](https://play.google.com/store/apps/details?id=com.fastaccess.github)") + "_";
sentVia.setChecked(PrefGetter.isSentViaEnabled());
sentVia.setText(getString(R.string.sent_from_fasthub, AppHelper.getDeviceName(), getString(R.string.app_name)));
MarkDownProvider.setMdText(sentVia, sentFromFastHub);
if (savedInstanceState == null) {
Intent intent = getIntent();
if (intent != null && intent.getExtras() != null) {
@ -154,9 +156,6 @@ public class EditorActivity extends BaseActivity<EditorMvp.View, EditorPresenter
@Override public void onSendResultAndFinish(@NonNull Comment commentModel, boolean isNew) {
hideProgress();
Intent intent = new Intent();
if(sentVia.isChecked())
commentModel.setBodyHtml(commentModel.getBodyHtml()+"<br /><br /><i>"+sentVia.getText().toString()+"</i>");
commentModel.save(commentModel);
intent.putExtras(Bundler.start()
.put(BundleConstant.ITEM, commentModel)
.put(BundleConstant.EXTRA, isNew)
@ -179,15 +178,13 @@ public class EditorActivity extends BaseActivity<EditorMvp.View, EditorPresenter
@Override public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.submit) {
String sentFromFastHub = getString(R.string.sent_from_fasthub, AppHelper.getDeviceName(),
"[" + getString(R.string.app_name_full) + "](https://play.google.com/store/apps/details?id=com.fastaccess.github)");
item.setEnabled(false);
getPresenter().onHandleSubmission(savedText +
(
savedText.toString().contains(sentVia.getText()) ? "" :
sentVia.isChecked() ? "\n\n_" + sentFromFastHub + "_" : ""
),
extraType, itemId, commentId, login, issueNumber, sha);
if (sentVia.isChecked()) {
String temp = savedText.toString();
if (!temp.contains(sentFromFastHub)) {
savedText = savedText + sentFromFastHub;
}
}
getPresenter().onHandleSubmission(savedText, extraType, itemId, commentId, login, issueNumber, sha);
return true;
}
return super.onOptionsItemSelected(item);

View File

@ -143,7 +143,7 @@ public class CommitCommentsFragments extends BaseFragment<CommitCommentsMvp.View
.put(BundleConstant.EXTRA_THREE, getPresenter().sha())
.put(BundleConstant.EXTRA_FOUR, item.getId())
.put(BundleConstant.EXTRA, item.getBody())
.put(BundleConstant.EXTRA_TYPE, BundleConstant.ExtraTYpe.EDIT_ISSUE_COMMENT_EXTRA)
.put(BundleConstant.EXTRA_TYPE, BundleConstant.ExtraTYpe.EDIT_COMMIT_COMMENT_EXTRA)
.end());
View view = getActivity() != null && getActivity().findViewById(R.id.fab) != null ? getActivity().findViewById(R.id.fab) : recycler;
ActivityHelper.startReveal(this, intent, view, BundleConstant.REQUEST_CODE);
@ -243,6 +243,14 @@ public class CommitCommentsFragments extends BaseFragment<CommitCommentsMvp.View
return getSparseBooleanArray().get(position);
}
@Override public boolean isPreviouslyReacted(long id, int vId) {
return getPresenter().isPreviouslyReacted(id, vId);
}
@Override public boolean isCallingApi(long id, int vId) {
return getPresenter().isCallingApi(id, vId);
}
private SparseBooleanArrayParcelable getSparseBooleanArray() {
if (sparseBooleanArray == null) {
sparseBooleanArray = new SparseBooleanArrayParcelable();
@ -254,12 +262,4 @@ public class CommitCommentsFragments extends BaseFragment<CommitCommentsMvp.View
hideProgress();
stateLayout.showReload(adapter.getItemCount());
}
@Override public boolean isPreviouslyReacted(long id, int vId) {
return getPresenter().isPreviouslyReacted(id, vId);
}
@Override public boolean isCallingApi(long id, int vId) {
return getPresenter().isCallingApi(id, vId);
}
}

View File

@ -3,32 +3,29 @@ package com.fastaccess.ui.modules.splash;
import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.fastaccess.BuildConfig;
import com.fastaccess.R;
import com.fastaccess.helper.PrefGetter;
import com.fastaccess.ui.modules.main.MainActivity;
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (PrefGetter.getThemeType(this) == PrefGetter.DARK) {
PackageManager p = getPackageManager();
ComponentName lightTheme = new ComponentName(BuildConfig.APPLICATION_ID, "com.fastaccess.ui.modules.splash.SplashActivity");
ComponentName darkTheme = new ComponentName(BuildConfig.APPLICATION_ID, "com.fastaccess.ui.modules.splash.SplashActivityDark");
p.setComponentEnabledSetting(lightTheme, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
p.setComponentEnabledSetting(lightTheme, PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED, PackageManager.DONT_KILL_APP);
p.setComponentEnabledSetting(darkTheme, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
}
if (PrefGetter.getThemeType(this)==PrefGetter.DARK) {
PackageManager p = getPackageManager();
ComponentName lightTheme = new ComponentName(BuildConfig.APPLICATION_ID, "com.fastaccess.ui.modules.splash.SplashActivity");
ComponentName darkTheme = new ComponentName(BuildConfig.APPLICATION_ID, "com.fastaccess.ui.modules.splash.SplashActivityDark");
p.setComponentEnabledSetting(lightTheme, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
p.setComponentEnabledSetting(lightTheme, PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED, PackageManager.DONT_KILL_APP);
p.setComponentEnabledSetting(darkTheme, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
}
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}

View File

@ -95,7 +95,6 @@ public class AvatarLayout extends FrameLayout implements ImageLoadingListener {
}
@Override public void onLoadingCancelled(String imageUri, View view) {}
public void setUrl(@Nullable String url, @Nullable String login) {
setUrl(url, login, false);
}

View File

@ -421,7 +421,7 @@
<string name="watchers">Watchers</string>
<string name="reviewers">Reviewers</string>
<string name="no_reviewers">No reviewers</string>
<string name="sent_from_fasthub">Sent from my %1$s using %2$s</string>
<string name="sent_from_fasthub">Sent from my %1$s using %2$s%3$s</string>
<string name="enable_signature">Enable Signature</string>
<string name="enable_signature_summary">Enable sent via signature</string>
</resources>