mirror of
https://github.com/k0shk0sh/FastHub.git
synced 2025-12-08 19:05:54 +00:00
released 3.0.0
This commit is contained in:
parent
b27e6abbd5
commit
fb96c4f333
@ -61,11 +61,14 @@ public class ColorsProvider {
|
||||
}
|
||||
|
||||
@NonNull public static ArrayList<String> languages() {
|
||||
return Stream.of(colors)
|
||||
ArrayList<String> lang = new ArrayList<>();
|
||||
lang.add("All Language");
|
||||
lang.addAll(Stream.of(colors)
|
||||
.filter(value -> value != null && !InputHelper.isEmpty(value.getKey()))
|
||||
.map(Map.Entry::getKey)
|
||||
.sortBy(s -> !popularLanguages.contains(s))
|
||||
.collect(Collectors.toCollection(ArrayList::new));
|
||||
.collect(Collectors.toCollection(ArrayList::new)));
|
||||
return lang;
|
||||
}
|
||||
|
||||
@Nullable public static LanguageColorModel getColor(@NonNull String lang) {
|
||||
|
||||
@ -11,7 +11,6 @@ import com.fastaccess.R;
|
||||
import com.fastaccess.data.dao.PayloadModel;
|
||||
import com.fastaccess.data.dao.model.Event;
|
||||
import com.fastaccess.data.dao.types.EventsType;
|
||||
import com.fastaccess.helper.InputHelper;
|
||||
import com.fastaccess.helper.ParseDateFormat;
|
||||
import com.fastaccess.provider.markdown.MarkDownProvider;
|
||||
import com.fastaccess.ui.widgets.AvatarLayout;
|
||||
@ -82,12 +81,13 @@ public class FeedsViewHolder extends BaseViewHolder<Event> {
|
||||
spannableBuilder.bold(action != null ? action.toLowerCase() : "")
|
||||
.append(eventsModel.getPayload() != null && eventsModel.getPayload().getAction() != null ? " " : "");
|
||||
if (type != EventsType.WatchEvent) {
|
||||
if (type == EventsType.CreateEvent && !InputHelper.isEmpty(eventsModel.getPayload().getRef())) {
|
||||
if (type == EventsType.CreateEvent && eventsModel.getPayload() != null && eventsModel.getPayload().getRefType() != null) {
|
||||
spannableBuilder
|
||||
.bold(itemView.getResources().getString(type.getType()).toLowerCase())
|
||||
.append(" ")
|
||||
.bold(eventsModel.getPayload().getRefType())
|
||||
.append(" ")
|
||||
.append(eventsModel.getPayload().getRef() != null ? eventsModel.getPayload().getRef() + " " : "")
|
||||
.append(in)
|
||||
.append(" ");
|
||||
} else if ((type == EventsType.PushEvent || type == EventsType.DeleteEvent) && eventsModel.getPayload() != null) {
|
||||
|
||||
@ -10,6 +10,7 @@ import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.ProgressBar;
|
||||
|
||||
import com.evernote.android.state.State;
|
||||
import com.fastaccess.R;
|
||||
import com.fastaccess.helper.ActivityHelper;
|
||||
import com.fastaccess.helper.BundleConstant;
|
||||
@ -22,7 +23,6 @@ import com.fastaccess.ui.widgets.StateLayout;
|
||||
import com.prettifier.pretty.PrettifyWebView;
|
||||
|
||||
import butterknife.BindView;
|
||||
import com.evernote.android.state.State;
|
||||
|
||||
/**
|
||||
* Created by Kosh on 28 Nov 2016, 9:27 PM
|
||||
@ -143,7 +143,7 @@ public class ViewerFragment extends BaseFragment<ViewerMvp.View, ViewerPresenter
|
||||
getPresenter().onHandleIntent(getArguments());
|
||||
} else {
|
||||
if (getPresenter().isMarkDown()) {
|
||||
onSetMdText(getPresenter().downloadedStream(), getArguments().getString(BundleConstant.EXTRA));
|
||||
onSetMdText(getPresenter().downloadedStream(), getPresenter().url());
|
||||
} else {
|
||||
onSetCode(getPresenter().downloadedStream());
|
||||
}
|
||||
|
||||
@ -5,10 +5,12 @@ import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.annotation.StringRes;
|
||||
import android.support.v4.widget.SwipeRefreshLayout;
|
||||
import android.view.View;
|
||||
|
||||
import com.annimon.stream.Collectors;
|
||||
import com.annimon.stream.Stream;
|
||||
import com.evernote.android.state.State;
|
||||
import com.fastaccess.R;
|
||||
import com.fastaccess.data.dao.model.User;
|
||||
import com.fastaccess.helper.BundleConstant;
|
||||
@ -27,7 +29,6 @@ import java.util.Map;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.OnClick;
|
||||
import com.evernote.android.state.State;
|
||||
|
||||
/**
|
||||
* Created by Kosh on 22 Feb 2017, 7:23 PM
|
||||
@ -38,6 +39,7 @@ public class AssigneesDialogFragment extends BaseDialogFragment<AssigneesMvp.Vie
|
||||
@BindView(R.id.title) FontTextView title;
|
||||
@BindView(R.id.recycler) DynamicRecyclerView recycler;
|
||||
@BindView(R.id.stateLayout) StateLayout stateLayout;
|
||||
@BindView(R.id.refresh) SwipeRefreshLayout refresh;
|
||||
@State HashMap<Integer, User> selectionMap;
|
||||
|
||||
private AssigneesAdapter adapter;
|
||||
@ -75,16 +77,13 @@ public class AssigneesDialogFragment extends BaseDialogFragment<AssigneesMvp.Vie
|
||||
|
||||
@Override protected void onFragmentCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
if (savedInstanceState == null) {
|
||||
if (getArguments() != null) {
|
||||
//noinspection ConstantConditions
|
||||
getPresenter().onCallApi(getArguments().getString(BundleConstant.EXTRA),
|
||||
getArguments().getString(BundleConstant.ID),
|
||||
getArguments().getBoolean(BundleConstant.EXTRA_TWO));
|
||||
}
|
||||
callApi();
|
||||
}
|
||||
refresh.setOnRefreshListener(this::callApi);
|
||||
stateLayout.setOnReloadListener(v -> callApi());
|
||||
boolean isAssinees = getArguments().getBoolean(BundleConstant.EXTRA_TWO);
|
||||
stateLayout.setEmptyText(isAssinees ? R.string.no_assignees : R.string.no_reviewers);
|
||||
recycler.setEmptyView(stateLayout);
|
||||
recycler.setEmptyView(stateLayout, refresh);
|
||||
recycler.addKeyLineDivider();
|
||||
title.setText(isAssinees ? R.string.assignees : R.string.reviewers);
|
||||
adapter = new AssigneesAdapter(getPresenter().getList(), this);
|
||||
@ -137,10 +136,12 @@ public class AssigneesDialogFragment extends BaseDialogFragment<AssigneesMvp.Vie
|
||||
|
||||
@Override public void showProgress(@StringRes int resId) {
|
||||
stateLayout.showProgress();
|
||||
refresh.setRefreshing(true);
|
||||
}
|
||||
|
||||
@Override public void hideProgress() {
|
||||
stateLayout.hideProgress();
|
||||
refresh.setRefreshing(false);
|
||||
}
|
||||
|
||||
@Override public void showErrorMessage(@NonNull String message) {
|
||||
@ -164,4 +165,11 @@ public class AssigneesDialogFragment extends BaseDialogFragment<AssigneesMvp.Vie
|
||||
}
|
||||
return selectionMap;
|
||||
}
|
||||
|
||||
private void callApi() {
|
||||
//noinspection ConstantConditions
|
||||
getPresenter().onCallApi(getArguments().getString(BundleConstant.EXTRA),
|
||||
getArguments().getString(BundleConstant.ID),
|
||||
getArguments().getBoolean(BundleConstant.EXTRA_TWO));
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,10 +5,12 @@ import android.os.Bundle;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.widget.SwipeRefreshLayout;
|
||||
import android.view.View;
|
||||
|
||||
import com.annimon.stream.Collectors;
|
||||
import com.annimon.stream.Stream;
|
||||
import com.evernote.android.state.State;
|
||||
import com.fastaccess.R;
|
||||
import com.fastaccess.data.dao.LabelListModel;
|
||||
import com.fastaccess.data.dao.LabelModel;
|
||||
@ -30,7 +32,6 @@ import java.util.Map;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.OnClick;
|
||||
import com.evernote.android.state.State;
|
||||
|
||||
/**
|
||||
* Created by Kosh on 22 Feb 2017, 7:23 PM
|
||||
@ -40,6 +41,7 @@ public class LabelsDialogFragment extends BaseDialogFragment<LabelsMvp.View, Lab
|
||||
|
||||
@BindView(R.id.title) FontTextView title;
|
||||
@BindView(R.id.recycler) DynamicRecyclerView recycler;
|
||||
@BindView(R.id.refresh) SwipeRefreshLayout refresh;
|
||||
@BindView(R.id.add) View add;
|
||||
@BindView(R.id.stateLayout) StateLayout stateLayout;
|
||||
@State HashMap<Integer, LabelModel> selectionMap;
|
||||
@ -87,8 +89,9 @@ public class LabelsDialogFragment extends BaseDialogFragment<LabelsMvp.View, Lab
|
||||
}
|
||||
|
||||
@Override protected void onFragmentCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
refresh.setEnabled(false);
|
||||
stateLayout.setEmptyText(R.string.no_labels);
|
||||
recycler.setEmptyView(stateLayout);
|
||||
recycler.setEmptyView(stateLayout, refresh);
|
||||
recycler.addKeyLineDivider();
|
||||
title.setText(R.string.labels);
|
||||
add.setVisibility(View.VISIBLE);
|
||||
|
||||
@ -9,6 +9,8 @@ import android.widget.ListView;
|
||||
import com.fastaccess.R;
|
||||
import com.fastaccess.data.dao.SettingsModel;
|
||||
import com.fastaccess.helper.ActivityHelper;
|
||||
import com.fastaccess.helper.BundleConstant;
|
||||
import com.fastaccess.helper.Bundler;
|
||||
import com.fastaccess.ui.adapter.SettingsAdapter;
|
||||
import com.fastaccess.ui.base.BaseActivity;
|
||||
import com.fastaccess.ui.base.mvp.presenter.BasePresenter;
|
||||
@ -17,7 +19,6 @@ import com.fastaccess.ui.modules.settings.category.SettingsCategoryActivity;
|
||||
import net.grandcentrix.thirtyinch.TiPresenter;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.OnItemClick;
|
||||
|
||||
public class SettingsActivity extends BaseActivity {
|
||||
|
||||
@ -26,23 +27,6 @@ public class SettingsActivity extends BaseActivity {
|
||||
private static int THEME_CHANGE = 32;
|
||||
private SettingsModel[] settings;
|
||||
|
||||
@OnItemClick(R.id.settingsList) void onItemClick(int position) {
|
||||
Intent intent = new Intent(this, SettingsCategoryActivity.class);
|
||||
intent.putExtra("settings", position);
|
||||
intent.putExtra("title", settings[position].getTitle());
|
||||
switch (position) {
|
||||
case 1:
|
||||
ActivityHelper.startReveal(this, intent, settingsList, THEME_CHANGE);
|
||||
break;
|
||||
case 4:
|
||||
showLanguageList();
|
||||
break;
|
||||
default:
|
||||
ActivityHelper.startReveal(this, intent, settingsList);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override protected int layout() {
|
||||
return R.layout.activity_settings;
|
||||
}
|
||||
@ -72,6 +56,24 @@ public class SettingsActivity extends BaseActivity {
|
||||
SettingsModel.newInstance(R.drawable.ic_language, getString(R.string.app_language), "")
|
||||
};
|
||||
settingsList.setAdapter(new SettingsAdapter(this, settings));
|
||||
settingsList.setOnItemClickListener((parent, view, position, id) -> {
|
||||
Intent intent = new Intent(this, SettingsCategoryActivity.class);
|
||||
intent.putExtras(Bundler.start()
|
||||
.put(BundleConstant.ITEM, position)
|
||||
.put(BundleConstant.EXTRA, settings[position].getTitle())
|
||||
.end());
|
||||
switch (position) {
|
||||
case 1:
|
||||
ActivityHelper.startReveal(this, intent, settingsList, THEME_CHANGE);
|
||||
break;
|
||||
case 4:
|
||||
showLanguageList();
|
||||
break;
|
||||
default:
|
||||
ActivityHelper.startReveal(this, intent, settingsList);
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
|
||||
@ -5,13 +5,15 @@ import android.support.annotation.NonNull;
|
||||
|
||||
import com.evernote.android.state.State;
|
||||
import com.fastaccess.R;
|
||||
import com.fastaccess.helper.BundleConstant;
|
||||
import com.fastaccess.ui.base.BaseActivity;
|
||||
|
||||
import net.grandcentrix.thirtyinch.TiPresenter;
|
||||
|
||||
public class SettingsCategoryActivity extends BaseActivity {
|
||||
public class SettingsCategoryActivity extends BaseActivity implements SettingsCategoryFragment.SettingsCallback {
|
||||
|
||||
@State String title;
|
||||
@State int settingsIndex;
|
||||
|
||||
@Override protected int layout() {
|
||||
return R.layout.activity_settings_category;
|
||||
@ -33,13 +35,12 @@ public class SettingsCategoryActivity extends BaseActivity {
|
||||
super.onCreate(savedInstanceState);
|
||||
setResult(RESULT_CANCELED);
|
||||
if (savedInstanceState == null) {
|
||||
title = getIntent() != null ? getIntent().getStringExtra("title") : getString(R.string.settings);
|
||||
|
||||
SettingsCategoryFragment settingsCategoryFragment = SettingsCategoryFragment.
|
||||
newInstance(getIntent().getIntExtra("settings", 0));
|
||||
Bundle bundle = getIntent().getExtras();
|
||||
title = bundle.getString(BundleConstant.EXTRA);
|
||||
settingsIndex = bundle.getInt(BundleConstant.ITEM);
|
||||
getSupportFragmentManager()
|
||||
.beginTransaction()
|
||||
.replace(R.id.settingsContainer, settingsCategoryFragment)
|
||||
.replace(R.id.settingsContainer, new SettingsCategoryFragment())
|
||||
.commit();
|
||||
}
|
||||
setTitle(title);
|
||||
@ -48,4 +49,8 @@ public class SettingsCategoryActivity extends BaseActivity {
|
||||
@NonNull @Override public TiPresenter providePresenter() {
|
||||
return new SettingsCategoryPresenter();
|
||||
}
|
||||
|
||||
@Override public int getSettingsType() {
|
||||
return settingsIndex;
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,12 +11,9 @@ import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.support.v7.preference.PreferenceFragmentCompat;
|
||||
import android.util.Log;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.fastaccess.R;
|
||||
import com.fastaccess.helper.BundleConstant;
|
||||
import com.fastaccess.helper.Bundler;
|
||||
import com.fastaccess.helper.InputHelper;
|
||||
import com.fastaccess.helper.PrefGetter;
|
||||
import com.fastaccess.helper.PrefHelper;
|
||||
@ -39,14 +36,15 @@ import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import butterknife.BindView;
|
||||
import es.dmoral.toasty.Toasty;
|
||||
|
||||
import static android.app.Activity.RESULT_OK;
|
||||
|
||||
public class SettingsCategoryFragment extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener {
|
||||
|
||||
@BindView(R.id.settingsContainer) FrameLayout settingsContainer;
|
||||
public interface SettingsCallback {
|
||||
int getSettingsType();
|
||||
}
|
||||
|
||||
private static int PERMISSION_REQUEST_CODE = 128;
|
||||
private static int RESTORE_REQUEST_CODE = 256;
|
||||
@ -60,26 +58,30 @@ public class SettingsCategoryFragment extends PreferenceFragmentCompat implement
|
||||
private Preference notificationTime;
|
||||
private Preference notificationRead;
|
||||
private Preference notificationSound;
|
||||
private SettingsCallback settingsCallback;
|
||||
|
||||
@NonNull public static SettingsCategoryFragment newInstance(int settings) {
|
||||
SettingsCategoryFragment fragment = new SettingsCategoryFragment();
|
||||
fragment.setArguments(Bundler.start()
|
||||
.put(BundleConstant.EXTRA, settings)
|
||||
.end());
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
this.callback = (BaseMvp.FAView) context;
|
||||
this.settingsCallback = (SettingsCallback) context;
|
||||
appTheme = PrefHelper.getString("appTheme");
|
||||
appColor = PrefHelper.getString("appColor");
|
||||
app_lauguage = PrefHelper.getString("app_language");
|
||||
}
|
||||
|
||||
@Override public void onDetach() {
|
||||
callback = null;
|
||||
settingsCallback = null;
|
||||
super.onDetach();
|
||||
}
|
||||
|
||||
@Override public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
}
|
||||
|
||||
@Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
||||
int settings = getArguments().getInt("settings", 0);
|
||||
switch (settings) {
|
||||
switch (settingsCallback.getSettingsType()) {
|
||||
case 0:
|
||||
addPreferencesFromResource(R.xml.notification_settings);
|
||||
notificationTime = findPreference("notificationTime");
|
||||
@ -158,9 +160,6 @@ public class SettingsCategoryFragment extends PreferenceFragmentCompat implement
|
||||
return true;
|
||||
});
|
||||
break;
|
||||
default:
|
||||
addPreferencesFromResource(R.xml.fasthub_settings);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -32,7 +32,7 @@ class TrendingActivity : BaseActivity<TrendingMvp.View, TrendingPresenter>(), Tr
|
||||
val monthly by lazy { findViewById(R.id.monthly) as TextView }
|
||||
val drawerLayout by lazy { findViewById(R.id.drawer) as DrawerLayout }
|
||||
|
||||
@State var selectedTitle: String = ""
|
||||
@State var selectedTitle: String = "All Language"
|
||||
|
||||
companion object {
|
||||
fun getTrendingIntent(context: Context, lang: String?, query: String?): Intent {
|
||||
@ -129,12 +129,15 @@ class TrendingActivity : BaseActivity<TrendingMvp.View, TrendingPresenter>(), Tr
|
||||
}
|
||||
|
||||
private fun onItemClicked(item: MenuItem?): Boolean {
|
||||
selectedTitle = item?.title.toString()
|
||||
when (item?.title.toString()) {
|
||||
"All Language" -> selectedTitle = ""
|
||||
else -> selectedTitle = item?.title.toString()
|
||||
}
|
||||
Logger.e(selectedTitle)
|
||||
setValues()
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
private fun closeDrawerLayout() {
|
||||
drawerLayout.closeDrawer(Gravity.END)
|
||||
}
|
||||
|
||||
@ -3,7 +3,9 @@ package com.fastaccess.ui.widgets;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.support.annotation.ColorInt;
|
||||
import android.text.SpannableStringBuilder;
|
||||
import android.text.TextPaint;
|
||||
import android.text.style.BackgroundColorSpan;
|
||||
import android.text.style.ClickableSpan;
|
||||
import android.text.style.ForegroundColorSpan;
|
||||
import android.text.style.ImageSpan;
|
||||
import android.text.style.StyleSpan;
|
||||
@ -108,5 +110,19 @@ public class SpannableBuilder extends SpannableStringBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
public SpannableBuilder clickable(final CharSequence text, final View.OnClickListener listener) {
|
||||
if (!InputHelper.isEmpty(text)) return append(text, new ClickableSpan() {
|
||||
@Override public void updateDrawState(TextPaint ds) {
|
||||
ds.setColor(ds.linkColor);
|
||||
ds.setUnderlineText(false);
|
||||
}
|
||||
|
||||
@Override public void onClick(View widget) {
|
||||
listener.onClick(widget);
|
||||
}
|
||||
});
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
<?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:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
||||
@ -80,12 +80,19 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.fastaccess.ui.widgets.recyclerview.DynamicRecyclerView
|
||||
android:id="@+id/recycler"
|
||||
<android.support.v4.widget.SwipeRefreshLayout
|
||||
android:id="@+id/refresh"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:scrollbars="vertical"
|
||||
app:layoutManager="@string/linear_layout_manager"/>
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.fastaccess.ui.widgets.recyclerview.DynamicRecyclerView
|
||||
android:id="@+id/recycler"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:scrollbars="vertical"
|
||||
app:layoutManager="@string/linear_layout_manager"/>
|
||||
|
||||
</android.support.v4.widget.SwipeRefreshLayout>
|
||||
|
||||
<include layout="@layout/state_layout"/>
|
||||
</FrameLayout>
|
||||
|
||||
@ -1,76 +1,62 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body id="preview">
|
||||
<h2><a id="FastHub_changelog_0"></a>FastHub changelog</h2>
|
||||
<h3><a id="Version__250_2"></a>Version 2.5.0</h3>
|
||||
<blockquote>
|
||||
<p><strong>P.S: I’m not asking for to much, if you are facing a problem in FastHub please report it at the issue tracker in GitHub either via
|
||||
FastHub app or from GitHub website, your reviews are what keeps me motivated to further improve FastHub.<br>
|
||||
Keep in mind that FastHub is free & open source.</strong></p>
|
||||
</blockquote>
|
||||
<h4><a id="Bugs__Enhancements__new_Features_7"></a>Bugs , Enhancements & new Features</h4>
|
||||
<ul>
|
||||
<li>(FIX) Oauth login for good!</li>
|
||||
<li>(FIX) Notifications gets triggered every few seconds</li>
|
||||
<li>(New) Reply, edit, delete & add PR review comment</li>
|
||||
<li>(New) Long click on Issue & PR to peak details & add comments faster</li>
|
||||
<li>(New) Github emoji support in comments & profile bio</li>
|
||||
<li>(New) Reply, edit, delete & add PR review comment</li>
|
||||
<li>(New) Reply, edit, delete & add PR review comment</li>
|
||||
<li>(New) Second click on any top tab will scrollTop.</li>
|
||||
<li>(New) FastHub Signature</li>
|
||||
<li>(New) Backup settings option (Pinned Items are coming soon)</li>
|
||||
<li>(New) Ability to see the Orgs. a person is part of in their profile</li>
|
||||
<li>(New) Profile contribution Graph</li>
|
||||
<li>(New) Ability to choose theme accent color</li>
|
||||
<li>(New) Mentioning ‘@’ in comments.</li>
|
||||
<li>(New) Repo topics</li>
|
||||
<li>(New) Reply, now shows the message you’re replying too</li>
|
||||
<li>(New) Many android “O” items</li>
|
||||
<li>(New) Language bar on login where default lang is not supported</li>
|
||||
<li>(New) Created a share option for comments</li>
|
||||
<li>(New) More notification interval options</li>
|
||||
<li>(New) Opening repo directories from deep links</li>
|
||||
<li>(New) Opening releases links</li>
|
||||
<li>(New) Japanese language</li>
|
||||
<li>(New) Clicking user details in profile should open image in full</li>
|
||||
<li>(Enhancement) Redid profile layout</li>
|
||||
<li>(Enhancement) Redid the layout of the settings</li>
|
||||
<li>(Enhancement) Truncate PR review files to max 3 lines</li>
|
||||
<li>(Enhancement) Moved FastHub Repo from <code>DrawerLayout</code> to Pinned Items</li>
|
||||
<li>(Enhancement) Lowered the white color tone</li>
|
||||
<li>(Enhancement) More Efficient Markdown</li>
|
||||
<li>(Enhancement) Merged Gists into one tab</li>
|
||||
<li>(Enhancement) Issues and Pull Requests now display the repo they’re in</li>
|
||||
<li>(Enhancement) Reconfigured the Notification Options</li>
|
||||
<li>(Enhancement) Added the Issue Number to the feed and personal Issues</li>
|
||||
<li>(Enhancement) Removed the scrollbar for Reactions</li>
|
||||
<li>(Enhancement) Notifications on a comment now show the profile picture</li>
|
||||
<li>(Enhancement) You can now dismiss all hints at once</li>
|
||||
<li>(Enhancement) Removed color accent from <code>DrawerLayout</code></li>
|
||||
<li>(Enhancement) Code snippets now show in monospace font</li>
|
||||
<li>(Enhancement) Comments layout</li>
|
||||
<li>(Enhancement) Lists & tasks lists in comments.</li>
|
||||
<li>(Fix) Showing more than 100 comments.</li>
|
||||
<li>(Fix) Fixed creating new issue link</li>
|
||||
<li>(Fix) Assignee in issues</li>
|
||||
<li>(Fix) Ability to react on the first comment</li>
|
||||
<li>(Fix) Tablet pictures not inline with text</li>
|
||||
<li>(Fix) Profile icon not updating</li>
|
||||
<li>(Fix) Changed the color of “Private” label to gray</li>
|
||||
<li>(Fix) Double progress bar.</li>
|
||||
<li>(Fix) Fix bolding and italic in the feed</li>
|
||||
<li>(Fix) Some spelling mistakes</li>
|
||||
<li>(Fix) Attempt to fix where FastHub would not re-load when muti-tasking</li>
|
||||
<li>(Fix) Reply editor would not initially focus</li>
|
||||
<li>(Fix) Hide Mark all as read if there are no unread items</li>
|
||||
<li>There are more stuff are not mentioned, find them out :p</li>
|
||||
<li>Lots of bug fixes</li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<p>Thanks to @JediBurrell, @yakov116 & everyone who contributed either via reporting bugs or via code contribution</p>
|
||||
</blockquote>
|
||||
<p><strong>Thank you very much</strong></p>
|
||||
</body>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Untitled Document.md</title>
|
||||
<style></style>
|
||||
</head>
|
||||
<body id="preview">
|
||||
<h2><a id="FastHub_changelog_0"></a>FastHub changelog
|
||||
</h2>
|
||||
<h3><a id="Version__300_Trending_Finally_2"></a>Version 3.0.0 (Trending Finally!)
|
||||
</h3>
|
||||
<blockquote>
|
||||
<p>
|
||||
<strong>P.S: I’m not asking for to much, if you are facing a problem in FastHub please report it at the issue tracker in GitHub either
|
||||
via FastHub app or from GitHub website, your reviews are what keeps me motivated to further improve FastHub.
|
||||
<br>
|
||||
Keep in mind that FastHub is free & open source.
|
||||
</strong>
|
||||
</p>
|
||||
</blockquote>
|
||||
<h4><a id="Bugs__Enhancements__new_Features_7"></a>Bugs , Enhancements & new Features
|
||||
</h4>
|
||||
<ul>
|
||||
<li>(New) Explore trending with all the languages out there.</li>
|
||||
<li>(New) Filter Repos (Thanks to @aadithyabk)</li>
|
||||
<li>(New) See specific user feed.</li>
|
||||
<li>(New) Display amount of starred repos.</li>
|
||||
<li>(New) Copy Repo URL to clipboard</li>
|
||||
<li>(New) Added participated issue sorting to personal issue list</li>
|
||||
<li>(New) Showing multiple build statues.</li>
|
||||
<li>(New) Lithuanian language (Thanks to @mistermantas)</li>
|
||||
<li>(New) no new line at end of file now shows a picture</li>
|
||||
<li>(Enhancement/Fix) Sort issues by reaction</li>
|
||||
<li>(Fix) Issues/PRs editing, was semi-broken in preview release</li>
|
||||
<li>(Fix) Showing missing repo (broken in previous version)</li>
|
||||
<li>(Fix) Support development now works,
|
||||
<em>please use it.</em>
|
||||
</li>
|
||||
<li>(Fix) Issue count not updating.</li>
|
||||
<li>(Fix) Emoji’s were joining :crossed_swords:</li>
|
||||
<li>(Fix) Back button when opening FastHub from an external link</li>
|
||||
<li>(Fix) Issue comment were only showing up to 100 comments</li>
|
||||
<li>(Fix) Dropdown menus not closing</li>
|
||||
<li>(Fix) Some tablets had text wrapping issues</li>
|
||||
<li>(Fix) Pictures not loading in PR’s/commits</li>
|
||||
<li>(Fix) Fixed crash when adding a react</li>
|
||||
<li>(Fix) Some tooltips were incorrect</li>
|
||||
<li>(Fix) Stargazers are now updated in pinned repo’s</li>
|
||||
<li>(Fix) Gist links (edited)</li>
|
||||
<li>There are more stuff are not mentioned, find them out :p</li>
|
||||
<li>Lots of bug fixes</li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<p>Thanks to everyone who contributed either via reporting bugs or via code contribution</p>
|
||||
</blockquote>
|
||||
<p>
|
||||
<strong>Thank you very much</strong>
|
||||
</p>
|
||||
|
||||
</html>
|
||||
</body>
|
||||
</html>
|
||||
@ -124,7 +124,7 @@
|
||||
<item>@string/all</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="trending_days_array">
|
||||
<string-array name="trending_days_array" translatable="false">
|
||||
<item>Daily</item>
|
||||
<item>Weekly</item>
|
||||
<item>Monthly</item>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user