Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#nulldvachin #1

Open
lisanyan opened this issue Jun 20, 2016 · 94 comments
Open

#nulldvachin #1

lisanyan opened this issue Jun 20, 2016 · 94 comments

Comments

@lisanyan
Copy link

lisanyan commented Jun 20, 2016

I suck at intros..

В общем, если файл загружен на pomf.cat, то src получается вида
//a.pomf.cat/plapla.webm (линк без протокола)
и в итоге аппендится к домену борды.
В массиве файла есть ключ external_upload (1/0), можно по нему проверять, и не аппендить линк или добавлять к нему протокол (e.g. "https:" + //a.pomf.cat/plapla.webm).

Еще в апи пару новых фич добавила
Удаление постов теперь может отдавать json, параметр ajax=1 в запрос

{
   "error" : {
      "1325" : "Неверный пароль для удаления.",
      "1327" : "Неверный пароль для удаления.",
      "1292" : "Неверный пароль для удаления.",
      "766" : "Неверный пароль для удаления."
   },
   "error_code" : 200
}

При успешном удалении вернет
{ "redir" : "/b/thread/num" }
или если был удален тред
{ "redir" : "/b/" }

Еще желательно добавлять параметр parent с номером треда к delete task, если пост из треда удаляется, чтобы правильный редирект был.

Список борд теперь можно забирать по /board/api/getboards

Алсо, теги sup/sub в разметку можно добавить и инпут no_pomf (не грузить файлы на внешний сервер) в форму отправки (если не сложно).

@Mishiranu
Copy link
Owner

Вроде почти всё сделал, кроме двух вещей.

Во-первых, мне не очень нравится апи списка досок т. к. они не упорядочены. Правильно отдавать массив объектов с полями "board_name" и "title", например. Или на сервере в принципе не предусмотрен порядок досок, а на страницах доски вбиты вручную?

Во-вторых, поддержку "no_pomf" добавить не получится. Модули тут бессильны, новые кнопочки-галочки можно добавлять только на стороне приложения. Я бы подумал насчёт добавления в приложение, но фича уж больно уникальная и, по моему мнению, не сильно востребованная.

@lisanyan
Copy link
Author

Массив сейчас переделаю с сортировкой и ключами board_desc/board_name. На страницах вручную забиты, руки никак не дойдут допилить динамическую подгрузку досок.

Окей, no_pomf - не критично.

@Mishiranu
Copy link
Owner

Так доски по алфавиту сортируются? Просто сортировать json-объект нет никакого смысла, потому что он в принципе не может быть упорядоченным, в любом случае стоит сделать массив.

@lisanyan
Copy link
Author

Да. Действительно, но пусть будет, ибо мне один аргумент достаточно было json энкодеру скормить.

Готово, сейчас нормально?

@Mishiranu
Copy link
Owner

У меня что-то сайт вообще отвалился.

@lisanyan
Copy link
Author

Сейчас вроде открывается, у хостера что-то с IO, диски оче медленно работают.

@Mishiranu
Copy link
Owner

Так что, думаешь объектом всё таки оставить? А то я что-то не вижу разницы по сравнению с прошлым разом, лол.

@lisanyan
Copy link
Author

Не. Т.е. мне просто data массивом сделать?

@Mishiranu
Copy link
Owner

Да, всё верно. И к каждому элементу массива добавить ещё поле кода доски.

@lisanyan
Copy link
Author

lisanyan commented Jun 20, 2016

Интернеты отвалились :\

Что-то вроде

   "data" : [
      {
         "board_desc" : "Чятик для двоих",
         "board_key" : "a",
         "board_name" : "Аниме"
      },
    ]

получилось

@lisanyan
Copy link
Author

lisanyan commented Jun 20, 2016

Или так сделать?

   "data" : [
      "a" : {
         "board_desc" : "Чятик для двоих",
         "board_key" : "a",
         "board_name" : "Аниме"
      },
    ]

@Mishiranu
Copy link
Owner

Mishiranu commented Jun 20, 2016

Первый вариант лучше. Короче, как сейчас — лучше всего.

@lisanyan
Copy link
Author

Done.

@Mishiranu
Copy link
Owner

Ок, тогда я всё сделал, сейчас обновлю.

@lisanyan
Copy link
Author

Сек

@lisanyan
Copy link
Author

Я думаю возврат апи удалялки тоже массивом сделать

@Mishiranu
Copy link
Owner

Да это уже необязательно.

@lisanyan
Copy link
Author

Ну ладно, тогда как есть оставлю. Спасибо.

@Mishiranu
Copy link
Owner

Просто я уже закоммитил релиз, лол. Я могу откатить, конечно, просто стоит ли?

@lisanyan
Copy link
Author

lisanyan commented Jun 20, 2016

Ну если его легче парсить будет, то думаю да. Или инкремент версии сделать до 1.4 лучше

Алсо, delete еще это выдать может,

Тред закрыт
Неправильный IP - (посты можно удалять без пароля, если айпи клиента совпадает с ip поста)
Пост протух.

Или необязательно хандлить все сообщения?

@Mishiranu
Copy link
Owner

Ну, мне разницы-то нет, но если хочешь сделать чтобы типа "нормально" было — давай. Выпущу как 1.4 потом.

Обработку этих сообщений тоже добавлю.

@Mishiranu
Copy link
Owner

Только лучше не так, как сейчас

{
   "error" : [
      {
         "380" : "Неверный пароль для удаления."
      }
   ],
   "error_code" : 200
}

а как-то так например:

{
   "error" : [
      {
         "post_id": "380",
         "reason": "Неверный пароль для удаления."
      }
   ],
   "error_code" : 200
}

@Mishiranu
Copy link
Owner

Кстати, вообще для апи рекомендую Content-Type отдавать application/json; charset=utf-8 вместо простого application/json.

@lisanyan
Copy link
Author

lisanyan commented Jun 20, 2016

Оке, просто переписывать историю коммитов не есть хорошо, если форки есть :D
Теперь такой вывод (наверное еще больше complicated :\ )

"error" : [
      {
         "error_msg" : "Неверный пароль для удаления.",
         "post" : "1331"
      },
   ],

Поправила Content-Type

@lisanyan
Copy link
Author

lisanyan commented Jun 20, 2016

Теперь post_id/reason в объекте

@lisanyan
Copy link
Author

Алсо, клиент куки сохраняет которые с ответом сервера после постинга прилетели?

@Mishiranu
Copy link
Owner

Нет. Что за куки и для чего они?

@lisanyan
Copy link
Author

name, если в нейме есть трип который есть в дб, то можно постить на любых досках с неймом и без капчи (что-то вроде пасскодов, лол).

@Mishiranu
Copy link
Owner

Не понял, а почему эта кука после постинга появляться должна?

@Mishiranu
Copy link
Owner

А, да, текст должен быть коротким и влезать в 1 строку. Оно на что-то более серьёзное не было рассчитано.

@Mishiranu
Copy link
Owner

Алсо, функция поста не всегда отдает поле banned, не будет exception из-за того что его нет, или лучше добавить его во все ошибки?

int banned = jsonObject.optInt("banned", 0);

Не будет. Если оно отсутствует или оно не преобразуется в число — вернёт 0.

@lisanyan
Copy link
Author

Тогда окей.

Поиск по борде еще можно прикрутить? /api/search
Параметры

find - строка для поиска
op - искать только в оп-постах
comment - поиск по тексту в посте (должен быть 1)
subject - поиск по теме

@Mishiranu
Copy link
Owner

Тоже готово.

@lisanyan
Copy link
Author

Thx~

Обновляй.

@lisanyan
Copy link
Author

#crash
В общем, если я отключаю флажки на борде, и рефрешу полностью тред (который закешировался с флажками), то клиент вылетает.

Device: Sony Ericsson hallon (MT15i)
SDK: 18 (4.3.1)
Application: 1031 (2.8.0)
----------------------------------------
java.lang.RuntimeException: An error occured while executing doInBackground()
    at android.os.AsyncTask$3.done(AsyncTask.java:299)
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
    at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
    at java.util.concurrent.FutureTask.run(FutureTask.java:239)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
    at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.NullPointerException
    at chan.content.model.Post.contentEquals(Post.java:559)
    at chan.content.model.Posts.pendingMerge(Posts.java:339)
    at com.mishiranu.dashchan.async.ReadPostsTask.doInBackground(ReadPostsTask.java:184)
    at com.mishiranu.dashchan.async.ReadPostsTask.doInBackground(ReadPostsTask.java:1)
    at android.os.AsyncTask$2.call(AsyncTask.java:287)
    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
    ... 3 more

@Mishiranu
Copy link
Owner

Да, глупая ошибка. Попробуй удали пока что тред из кэша (или вообще кэш очисти), а я сейчас исправлю.

@Mishiranu
Copy link
Owner

Это ошибка не в модуле, а в клиенте, так что только с его обновлением что-то изменится.

@lisanyan
Copy link
Author

Оки.

@lisanyan
Copy link
Author

Done.

@Mishiranu
Copy link
Owner

Mishiranu commented Jul 15, 2016

Эх, я только подумал, что мне будет проще локально у себя их просто убрать для теста, и удалил прошлое сообщение... Ну да ладно.

@Mishiranu
Copy link
Owner

Да я уже всё проверил.
На будущее — лучше создай issue у самого проекта, если подобный вылет происходит, расширение само по себе не может приводить к вылету (нет, ну может конечно, если постараться), а если всё таки приводит — это баг клиента.

@lisanyan
Copy link
Author

Получилось пофиксить?

Alrighty.

@Mishiranu
Copy link
Owner

Да, получилось.

@lisanyan
Copy link
Author

lisanyan commented Jul 22, 2016

API update

Новые поля в конфиге

max_comment_length //Maximum number of characters in a comment
max_field_length //Maximum number of characters in subject, name, and email
default_name //Дефолтный нейм (аноним итд)

Скорость борды (постов в час) - поле board_speed в boardinfo.

Печенька auth переименована в wakaauth

Алсо, категории борд можешь прикрутить? Только я не знаю как их лучше реализовать (чтобы динамически подгружалось), сейчас есть поле board_cat в объекте массива с досками.

Могу добавить пару строк, чтобы делать сплит по "|" в массивы

"info" : {
     "category_order" : "Обсуждения|Общее|Японская культура",
     "board_order" : "a|b|d|diy|elf|h|l|mg|mu"
}

Или добавить сортированные массивы

"info" : {
      "category_array" : [
         "Обсуждения",
         "Общее",
         "Японская культура"
      ],
      "board_array" : [
         "a",
         "b",
         "d",
         "diy",
         "elf",
         "h",
         "l",
         "mg",
         "mu"
      ],
}

UPD: Welp, думаю оставлю массивы
UPD: Алсо, добавь капкод мода

adminpost == 1 //capcode - Team
adminpost == 2 //capcode - Mod

@lisanyan lisanyan reopened this Jul 22, 2016
@lisanyan lisanyan changed the title Fix pomf links #nulldvachin #nulldvachin Jul 22, 2016
@Mishiranu
Copy link
Owner

max_comment_length

Точно максимальное число символов? Не байт?

@lisanyan
Copy link
Author

Байт, но сейчас исправлю.

@Mishiranu
Copy link
Owner

Mishiranu commented Jul 22, 2016

Печенька auth переименована в wakaauth

А b/api/authorize как работает? Его параметр тоже wakaauth называется или по прежнему auth?

@Mishiranu
Copy link
Owner

Байт, но сейчас исправлю.

Лол, я сейчас в d пытался пост отправить, мне в качестве кода ошибки возвращалась длина строки. Я так и понял, что ты длину строки тестируешь.

@lisanyan
Copy link
Author

lisanyan commented Jul 22, 2016

Лол, я сейчас в d пытался пост отправить, мне в качестве кода ошибки возвращалась длина строки. Я так и понял, что ты длину строки тестируешь.

Да, лол.

Done, теперь чекает по символам.

Параметр по прежнему auth называется.

@Mishiranu
Copy link
Owner

Готово всё. Обновлять?

@lisanyan
Copy link
Author

Йеп.

@lisanyan
Copy link
Author

lisanyan commented Apr 3, 2017

Можешь альт. домен обновить?

02ch.info мертв, новый - buttflaps.pp.ua

@Mishiranu
Copy link
Owner

Готово.

@lisanyan
Copy link
Author

lisanyan commented Feb 8, 2018

Сменили движок на meguca (на тохочане тоже), соотвественно апи поменялся, можешь запилить?

Описание здесь
Алсо у объекта треда еще поля sticky и locked, но в доке не описаны.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants