Coder Social home page Coder Social logo

igz0 / skyclad Goto Github PK

View Code? Open in Web Editor NEW
50.0 3.0 3.0 451 KB

An experimental ATP/Bluesky client app for iOS and Android by Flutter.

License: MIT License

Kotlin 0.08% Ruby 1.64% Swift 0.86% Objective-C 0.02% Dart 69.86% CMake 11.45% C++ 14.10% C 0.87% HTML 1.12%
bluesky bluesky-app bluesky-client dart flutter

skyclad's People

Contributors

igz0 avatar myconsciousness avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

skyclad's Issues

doesnt wana log in

edit
i created a password for app the from the bluesky web v and it logged in but it doesnt show anything on my timeline it keep loading

i have android 9 download the android apk from github page entered my username and password but it doesnt login do i need authentication the app ? and i already login to bluesky in another android client do i need to log out first ?
it said : exception not a vaild app password ... but am sure this the right one

Post数が0のアカウントのプロフィールが表示できない

通知タブ→ユーザーアイコン
と辿ると、ロードが終わらずずっとぐるぐるが出たままです。
bsky.appで確認したところ、その現象が発生するユーザーはPost数が0でした。

AndroidとiOS両方で確認できました。

環境 : Android 12 (58.2.B.0.520), iPadOS 16.6

投稿文のリンクが適切にリンク化されない

スクリーンショット

調査

  • 以下のJSONのようにpost.record.record.textには428lab.connpass.com/event/293255...と省略されたURLが入っている。
  • post.record.record.facetsにリンクの情報が格納されているが現状のコードはpost.record.record.textのURLをlinkifyで検出しているため、URLが省略された場合に正常にリンク化できていない。

// 投稿文をリンク付きの要素に分割する
final elements = linkify(post['record']?['text'],
options: const LinkifyOptions(humanize: false));
final List<InlineSpan> spans = [];
// 投稿文の要素をウィジェットに変換する
for (final element in elements) {
if (element is TextElement) {
// リプライを検出し、UserProfile画面に遷移するリンクを作成する
final matches = replyPattern.allMatches(element.text);
int lastIndex = 0;
for (final match in matches) {
final replyText = match.group(0);
if (replyText != null) {
spans.add(TextSpan(
text: element.text.substring(lastIndex, match.start),
));
spans.add(TextSpan(
text: replyText,
style: const TextStyle(color: Colors.blue),
recognizer: TapGestureRecognizer()
..onTap = () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
UserProfileScreen(actor: replyText.substring(1)),
),
);
},
));
lastIndex = match.end;
}
}
spans.add(TextSpan(
text: element.text.substring(lastIndex),
));
} else if (element is UrlElement) {
spans.add(TextSpan(
text: element.text,
style: const TextStyle(color: Colors.blue),
recognizer: TapGestureRecognizer()
..onTap = () async {
final messenger = ScaffoldMessenger.of(context);
if (await canLaunchUrl(Uri.parse(element.url))) {
await launchUrl(Uri.parse(element.url),
mode: LaunchMode.externalApplication);
} else {
messenger.showSnackBar(
SnackBar(content: Text(
// ignore: use_build_context_synchronously
AppLocalizations.of(context)!.errorFailedToOpenUrl)),
);
}
},
));
}
}

{
  "post": {
    "uri": "at://did:plc:bwdof2anluuf5wmfy2upgulw/app.bsky.feed.post/3k6i3hiaiok2g",
    "cid": "bafyreia2t2l5ukqtqhg6miz56uh65jpco647v5uvycmd6sexczfbzo4nhm",
    "author": {
      "did": "did:plc:bwdof2anluuf5wmfy2upgulw",
      "handle": "uakihir0.com",
      "displayName": "うるし💫",
      "avatar": "https://av-cdn.bsky.app/img/avatar/plain/did:plc:bwdof2anluuf5wmfy2upgulw/bafkreiecq272vcq2hegedmya5okjh4g5rwog37btcosjfnsvsdvtlwx37y@jpeg",
      "viewer": {
        "muted": false,
        "blockedBy": false,
        "following": "at://did:plc:ixw7yk4c7d5hw7522fyumdd3/app.bsky.graph.follow/3ju7eoufjtf22",
        "followedBy": "at://did:plc:bwdof2anluuf5wmfy2upgulw/app.bsky.graph.follow/3ju7ekya3v22x"
      },
      "labels": []
    },
    "record": {
      "text": "昨日の勉強会の資料見てる。\n428lab.connpass.com/event/293255...\n\nDM の実装発表、やろうと思えば DM がない SNS ならどこでもそのロジックなら実現できると思うけど、タイムラインとかを汚さずに DM が実現できるのは結構面白いね。これは脆弱性というよりは仕様かな?",
      "$type": "app.bsky.feed.post",
      "embed": {
        "$type": "app.bsky.embed.external",
        "external": {
          "uri": "https://428lab.connpass.com/event/293255/presentation/",
          "thumb": {
            "$type": "blob",
            "ref": {
              "$link": "bafkreid6cktcti6bxsoe3osulp2qfl27afupqcrkz4tavmtgg4lc44ewqe"
            },
            "mimeType": "image/jpeg",
            "size": 671303
          },
          "title": "Bluesky/ATProtocol 勉強会 #2 - 資料一覧 - connpass",
          "description": "「Bluesky/ATProtocol 勉強会 #2」の資料一覧です"
        }
      },
      "langs": [
        "ja"
      ],
      "facets": [
        {
          "index": {
            "byteEnd": 75,
            "byteStart": 40
          },
          "features": [
            {
              "uri": "https://428lab.connpass.com/event/293255/presentation/",
              "$type": "app.bsky.richtext.facet#link"
            }
          ]
        }
      ],
      "createdAt": "2023-09-03T08:41:09.629Z"
    },
    "embed": {
      "$type": "app.bsky.embed.external#view",
      "external": {
        "uri": "https://428lab.connpass.com/event/293255/presentation/",
        "title": "Bluesky/ATProtocol 勉強会 #2 - 資料一覧 - connpass",
        "description": "「Bluesky/ATProtocol 勉強会 #2」の資料一覧です",
        "thumb": "https://av-cdn.bsky.app/img/feed_thumbnail/plain/did:plc:bwdof2anluuf5wmfy2upgulw/bafkreid6cktcti6bxsoe3osulp2qfl27afupqcrkz4tavmtgg4lc44ewqe@jpeg"
      }
    },
    "replyCount": 0,
    "repostCount": 3,
    "likeCount": 12,
    "indexedAt": "2023-09-03T08:41:08.189Z",
    "viewer": {},
    "labels": []
  },
  "reason": {
    "$type": "app.bsky.feed.defs#reasonRepost",
    "by": {
      "did": "did:plc:zm6av6alkfxtxzhjoqf7csbj",
      "handle": "voluntas.net",
      "displayName": "V",
      "avatar": "https://av-cdn.bsky.app/img/avatar/plain/did:plc:zm6av6alkfxtxzhjoqf7csbj/bafkreic6czrjxiugs7yf5hu5tyma5zybcmlpmrgtl42upksdhl3j6ypxjy@jpeg",
      "viewer": {
        "muted": false,
        "blockedBy": false,
        "following": "at://did:plc:ixw7yk4c7d5hw7522fyumdd3/app.bsky.graph.follow/3jzjq5ordjm2a"
      },
      "labels": []
    },
    "indexedAt": "2023-09-03T08:51:05.935Z"
  }
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.