Hello Hive Community Members,
Welcome to daily updates from @sagarkothari88 - a Hive Witness & mobile-app-developer.
Actively contributing to following projects on Hive
- HiveFreedomDollar
- HiveCurators - DiscordBot
- Video Encoder Nodes
- The Hive Mobile App
- 3Speak Mobile App
- 3Speak new-website - backend (acela-core)
- 3Speak new-website
- Hive Witness Node
Updates: HiveFreedomDollar
- Yesterday, I talked about how upload an image from Flutter-webapp
- Today, I'm going talk about How to add an image to Hive Post on a Flutter Android/ iOS App.
- Note, this post is a part solution. I'll publish another part when it's working, most probably tomorrow.
Adding an image on Hive Post
- https://developers.hive.io/services/imageHoster.html - Here the piece of code for uploading the image when you have the PostingKey.
- I found some related code but not exact code to match my need - upload image with @HiveKeychain, @hiveauth
- In this article, I'll illustrate how to upload an image even with plain javascript inside html page.
Objective: Use Flutter as front-end & Upload an image using HTML & vanilla JS
We'll have a web-view on the native app side.
Using this web-view we'll be able to execute javascript of our choice.
Flutter can talk to native-apps & native apps can execute these javascript.
With this, we don't have to re-invent the wheel & create libraries in dart/flutter.
With this approach, we utilise already developed javascript libraries & make the max out of it.
In today's post, I'll talk about the javascript code which we'll be adding
In next post, I'll talk about how to execute javascript functions from Flutter.
Reference #1: https://gitlab.syncad.com/hive/condenser/-/blob/develop/src/app/redux/UserSaga.js#L861
Reference #2: https://developers.hive.io/services/imageHoster.html
Step 1: Getting the Buffer
<body>
// this one to get the access to Buffer
<script src="https://bundle.run/buffer@6.0.3"></script>
Step 2. Getting Base64 of an image.
- We'll implement
image_picker
on the Flutter side. - Flutter side code will generate base64 of selected image.
- Flutter side code will supply base64, file name to javascript side.
Step 3: Processing based on file name
- based on file name supplied, we'll define the upload type.
function _getFileTypeFromExtension(fileName) {
let extension = fileName.split(".").pop().toLowerCase();
switch (extension) {
case "jpg":
case "jpeg":
return "image/jpeg";
case "png":
return "image/png";
case "gif":
return "image/gif";
default:
return "image/jpeg";
}
}
Step 4. Creating File from Binary
- Following code snippet will generate a file from given binary & file path.
- It uses above defined function as well.
function _createFileFromBinaryString(binaryString, filePath) {
let fileName = filePath.substring(filePath.lastIndexOf("/") + 1);
let fileType = _getFileTypeFromExtension(fileName);
let byteArray = new Uint8Array(binaryString.length);
for (let i = 0; i < binaryString.length; i++) {
byteArray[i] = binaryString.charCodeAt(i);
}
let blob = new Blob([byteArray], { type: fileType });
let file = new File([blob], fileName, { type: fileType });
return file;
}
Step 5. Base64 to Binary & Binary to Buffer
- We'll call following function from flutter side.
- In this, we'll be supplying base64 encoded image
- This base64 encoded image will be converted to file (binary)
- From that binary, we'll generate buffer
- This buffer, we'll use to create signature
- And created file, we'll use to upload it on Hive
async function uploadImage(id, accountName, binary, filePath) {
const binaryString = atob(binary);
var file = _createFileFromBinaryString(binaryString, filePath);
const content = window.buffer.Buffer.from(binaryString, "binary");
const prefix = window.buffer.Buffer.from("ImageSigningChallenge");
const buf = window.buffer.Buffer.concat([prefix, content]);
// need to work on now getting the buffer signed from HiveKeychain/HiveAuth using HAS.
}
That's it?
- NO NO. Not yet. Let's wait for next post.
- In next post, I'll connect the dots & add a short demo video to show it working.
- I'm not the HTML or Javascript Guy.
- I like iOS App Development - Swift & I like Flutter.
- For me, it really took good amount of time to not only figure it out but to put pieces together to make it work.
- So, take a moment of appreciation, please don't forget to upvote the content or vote me as Hive Witness
Updates: HiveCurators - DiscordBot
- HiveCurators - DiscordBot is doing well
- No outages were reported
- HiveCurators With DiscordBot was able to successfully curate approximately 39 posts today.
- Curation report is added below in the post
- I've staked ALIVE.
- Those who read my post & reply, I'll reward them with Alive
- Those who reply to curation comments, they will be randomly rewarded with Alive token.
- To these users, @usagidee, @marilour, @sacra97, @kemmyb, @nainaztengra, @mysteriousroad, @jmis101, @blanca56, @damelysh, @ekads, @lesmann, @mbracho, @medussart, I sent 0.05 Hive Power - to reward them for their contribution on Hive Communities.
- Here is the screenshot, from Ecency Wallet, indicating the same.
Updates: Video Encoder Nodes
- I'm running 12 powerful video encoder nodes for 3Speak Community Members.
- Monthly internet bandwidth usage which exceeds 15 TB, Maintenance cost, Electricity backup, Internet backup, Depreciation cost - it's all on me.
- Yesterday (13-Apr-2024) 3Speak published total 150 videos
- My video encoder nodes encoded 121 videos from 150 videos published.
How is @sagarKothari88 doing?
- I'm doing good today. Son is also feeling little better.
- He didn't sleep at all whole night yesterday & half of the Sunday, we spent by taking enough rest.
- We watched all pending episodes of Young Sheldon.
- I tried watching remaining episode of FallOut but it's little difficult for me 😥. I'll try to watch this may be later.
- Overall, looking forward for coming week.
- Excited to contribute even more for #Hive in next week.
Curation Report
NOTE: If you don't like tagging you under curation report, let me know in comment section & I'll exclude you from the curation report.
Author | Post | Weight |
---|---|---|
@juancar347 | @juancar347/eng-spn-a-lost-hermitage-in-the-bureba-una-ermita-perdida-en-la-bureba | 40 % |
@amitsharma | @amitsharma/chandeliers-cane-lampshades-lamps-beautiful-decorative-ideas-to-illuminate-spaces | 22 % |
@rtonline | @rtonline/battle-mage-secrets-weekly-challenge-five-alive-ruleset-splinterlands | 36 % |
@abenad | @abenad/1000-hp-in-three-months-im-emotional | 20 % |
@edittasc86 | @edittasc86/esp-eng-sincronias-oror-iniciativa-el-regalo-de-coincidir | 20 % |
@eumelysm | @eumelysm/the-best-coincidences-of-my-life-initiative-programming-for-wellness-esp-ing | 20 % |
@osomar357 | @osomar357/iniciativa-personalidades-fuertes-seres-empaticos | 20 % |
@antoniarhuiz | @antoniarhuiz/esp-eng-sincronia-de-la-vida-coincidencias-oror-iniciativa-el-regalo-de-coincidir | 22 % |
@vickoly | @vickoly/reflections-on-side-hustles-triumphs-and-trials-in-pursuit-of-financial-freedom | 27 % |
@emmaris | @emmaris/estrategia-para-trabajar-las-emociones-con-los-ninos-en-casa-esp-eng | 20 % |
@xykorlz | @xykorlz/fantastic-five-alive-challenge | 21 % |
@netflixr | @netflixr/lost-in-translation-film-an-entertaining-look-into-loneliness-and-love | 34 % |
@alonicus | @alonicus/13-april-2024-mariannewests-freewrite-writing-prompt-day-2341-consumers-of-blood-critical-mass | 27 % |
@fernanblog | @fernanblog/hnqhwsss | 22 % |
@shiftrox | @shiftrox/enptbr-monthly-holiday-have-you-thought-the-dream-of-family-day | 27 % |
@soyunasantacruz | @soyunasantacruz/tasting-vegetarian-food-in-good-company-degustando-comida-vegetariana-en-buena-compaa | 25 % |
@sunisa | @sunisa/i-don-t-know-what | 21 % |
@sugarelys | @sugarelys/retomando-clases-de-danza-arabe-luego-de-4-anos-esp-eng | 26 % |
@ayijufridar | @ayijufridar/the-beautiful-princesses-of-the-lake-guard-monomad-or | 20 % |
@rqr4 | @rqr4/sand-storm-s-combat-ability | 21 % |
@curatorcat | @curatorcat/caturday-finally-enjoying-a-day-warm-enough-to-open-the-windows | 22 % |
@nbarrios67 | @nbarrios67/creative-sunday-rapture-arrebatamiento-english-spanish- | 21 % |
@qwerrie | @qwerrie/2024-first-spring-cats-arrived | 40 % |
@guurry123 | @guurry123/social-media-transforming-lives-and-businesses | 24 % |
@vsc.network | @vsc.network/vsc-block-explorer-ui-updates-1h-2024 | 100 % |
@sanjeevm | @sanjeevm/vrindavan-shri-banke-bihariji-temple-keshi-ghat-and-nidhivan | 40 % |
@iptrucs | @iptrucs/milly-la-foret-the-village-of-jean-cocteau-part-1 | 20 % |
@entraide.rewards | @entraide.rewards/ecu-s-distribution-14th-april | 20 % |
@ak08 | @ak08/how-about-some-weapons-training-my-friend | 22 % |
@reeta0119 | @reeta0119/tv-shows-that-i-watch-everyday | 40 % |
@jane1289 | @jane1289/tung-chung-bay-in-black | 29 % |
@george-dee | @george-dee/minimalism-beyond-physical-space | 22 % |
@intishar | @intishar/for-a-better-lifestyle- | 23 % |
@palomap3 | @palomap3/mi-diario-14-abril-2024 | 27 % |
@aera8 | @aera8/come-enjoy-kolang-kaling-compote | 20 % |
@avdesing | @avdesing/in-wood-painted-and-carved | 24 % |
@belkyscabrera | @belkyscabrera/monument-to-the-joropo-in | 24 % |
What do you think?
- What do you guys think?
- Am I heading in right direction? Am I doing good for Hive?
- Do you have some tips to share? If yes, add it in comment section.
Who am I?
- I'm a Hive Witness
- 3Speak App Developer
- I've also contributed to mobile-app for HiveAuth
- I also work on HiveFreedomDollar App
- I worked with Team @ecency for integrating 3speak-video-upload feature
- Founder of HiveCurators Community - @hive-185924/@hivecurators
- Founder of https://the-hive-mobile.app/#/
Support me
- Please upvote my content to motivate me
- Please Reblog
- Please vote me as Hive Witness