derrell / app-inventor-gallery Goto Github PK
View Code? Open in Web Editor NEWApp Inventor Gallery
App Inventor Gallery
The default display name is an ugly number. The user should have the option of changing that to something more to their liking.
Lyn and I need a way to save the current state of the simulated database from the browser in order to test our comment functionality.
Ensure that integers/longs are saved in the database as such, and not as floating point. (See "apps" sim data for examples)
An individual comment can be deleted by deleteComment(). If that comment has children, those children become orphaned. This may or may not be a problem. We must make sure that no child operation would ever try to retrieve that now-deleted parent comment.
Please tag some apps as Featured so that I can pull actual featured apps in the homepage feed and still have something show up.
Currently, when a new app is added, if no image is provided, a default image is being used. Instead of using a default image, it should either disallow adding the app if no image is provided, or have no image at all.
It would be useful for the search feature in FindApps to be able to query on original creation date. Currently the only property regarding date in the database is 'uploadTime.' This property records the date/time of the most recent update of the app's source code. Since this can change repeatedly over the life of the App, it does not offer a solid artifact to search on. For example: I saw a really cool app in August, and remember nothing about it. It is now December and I want to find it. The developer updated the App in November. I now have no information to search upon.
The Visitor Management page used to work with the old, Java-based backend. It no longer fully functions, and the old permissions mechanism has been revamped entirely, so the permission list likely needs some work. This Issue is for the frontend work. See also #24 pertaining to the backend permissions work.
Assigning to Chris.
the function aiagallery.dbif.MApps.appQuery() is missing the API Documentation header comment.
All of the *.sh files are getting converted to have crlf line endings. Research gitattributes (http://www.kernel.org/pub/software/scm/git/docs/gitattributes.html) and explicitly assign .sh files to use nl endings.
Currently, the mobile tag=all request is returning email addresses instead of (or in addition to) display names. Email addresses should never be returned except in the following two cases (I believe):
Check everyplace that references ObjVisitors to be sure that the "id" field is not returned.
Adding Comment retrieval to getAppInfo. This will prevent an extra round trip which is currently required to use the separate RPC for getting comments. Comments will be requested by having a "comments" field in the requestedFields object passed when the RPC is called. The comments will then be returned as an additional member of the object which is currently returned by this RPC.
There is a bug in the addComments code. I can add comments and get them back when I first open an application. Closing and opening the app tag without refreshing the browser does not affect addComments. However, after you refresh the browser, addComments starts to reuse comment uid's, effectively overwriting the ones which were previously added.
Also, in the data returned in getAppInfo, there is numComments and numRootComments. numRootComments appears to be accurately counting the number of comments added, even though some have been overwritten by addComments. numComments, however, always remains at zero.
Pulled from #27 as a separate issue.
For some reason, previous authors aren't being stored properly during new app creation. To reproduce this bug, simply "upload" a new app with anything you like in most fields, just make sure that the Previous Owners field is filled with anything. Then switch to another module, and back again. This error is the MApps.getAppList attempting to process an array of previous authors, where instead it only receives a string.
I have commented out the subject test, in VisitorTest.js. It needs to be implemented, and included in the tests once it properly tests what it is supposed to, and passes.
I'd like to get FindOps up and running. I am assigning myself, but prolly won't get to this for a while.
What should a proper FindOps query object look like?
Currently, pressing "Submit Comment" when no text has been entered in the comment field, produces a 'null' comment. Comments which have no text, or contain only white space, should be prevented from being added to the database.
@mbenn112 This is assigned to you to fix in the GUI.
@reedspool, the backend code should silently ignore empty comments and comments containing only white space.
There should be some way to remove comments without deleting them entirely. Maybe a way to just mark them as inactive?
I need to be showing the authors' display names instead of the private owner names on the apps in the Featured Apps feed. It would be nice to be able to do this without running an extra query, especially since I think this will be a pretty common use case. Would it be possible to add the display name as part of the app data, or do some magic to return the display name instead of the owner name in the appQuery method of MApps.js?
When searching certain text based properties, it would be quite useful to query for text containing the search term. As it stands, only queries for text properties which exactly equal the search term can be queried. Examples of properties are the following: Tags, 'game' in 'games'; Author, 'Last' in 'FirstLast'; Description, 'fun' in 'This app is totally fun!'
Issuing a tag=by_developer request with a not-found displayName causes an error to be thrown:
{"id":"tag","error":{"origin":1,"code":-1,"message":"Method threw an error: TypeError: Cannot read property "id" from undefined"}}
This looks like something may be dereferencing a visitor object without checking to be sure it exists.
MApps.getAppInfo() is a read-only function as far as the database is concerned. It does however return a formatted App object, instead of the original. At the moment, when one opens an App Info page, by clicking on an App in the gallery, everything looks great. By closing the new App Info Tab, and clicking on the very same App in the gallery again, an error is drawn. The error is from MApps.getAppInfo() trying to retrieve the App from the database, but instead getting the formatted App object it received previously.
getAppList returns only the calling user's Apps. The function getAppListAll is very descriptive. getAppList obviously returns a subset of what getAppListAll returns, but what subset? I submit that getMyAppList would be a better name, and prevent much confusion in the future. Other suggestions are welcome.
At present, images, the source zip file, and the apk file are stored as data URLs. The mobile client can't support those at present, so we need to provide a means of specifying a "file" to download. This will require offering a GET api to retrieve particular images and files from an AppInfo entity, base64-decoding the requested data URL, and returning the correct MIME type and data.
Currently, when comments are stored, the current value of the displayName is used in the 'visitor' field. This is incorrect, because if the commenting user changes his display name, comments will still be displayed with the old name, and no one can search by that user's now-nonexistent name.
Assigned to @reedspool.
There are going to be too many applications for the entire application list to be loaded into memory at one time, for the Application Management module. This module should be altered to use qx.ui.table.model.Remote instead of qx.ui.table.model.Simple so that only those records near the ones that are displayed are actually fetched.
Assigned to @adorettic
I'm trying to use getAppInfo() in my MMobile.getInfo(). It is currently breaking because I don't know what the error parameter is and thus what to pass to it.
Featured Apps on homepage should use display name instead of owner on app byline.
Currently, RPC failures generate an alert() message. Those failures should be somehow incorporated into the particular GUI for which the failure is occurring.
Implement the Advanced Search capatility in the Find Apps module. This will provide a gui to the query functionality which already exists in the backend.
This mobile request (and variants of it) returns an empty array in the simulator, and a caught Java error in App Engine (NaN).
For users to be capable of changing their display names, an RPC will be required (something like "setMyDisplayName") that takes a new display name as a parameter, and updates that user's display name. The appropriate home for this is MVisitors.js
We want people to be able to delete their own comments. This will be the first line of defense against user mistakes. I would say that we could have them edit their own comments, except for two reasons. A comment is supposedly not that much text, so a user should not feel it a pain to rewrite a comment (they can even copy and paste), and this would be a lot more work in the backend. A suggestion from the phone meeting today was for me as a user to be able to delete my own comments. What's required for this in the backend is an RPC which I can use, which can ONLY delete MY comments, and no one elses. How this looks and is attached to the frontend is a topic for Mary and Lyn's digest.
getAppInfo() attempts to hide the "owner id" field of the App from the user. In attempting to replace this field with the "Display Name" field, a query is made using the "whoami" user data, to get whoami's Display Name. This wrongfully reports that the owner of any queried App is the person who made the query. I believe instead this query should be made on "app.owner" before that value is deleted.
Since the gallery site is all one application, the use of the back button is inappropriate, and should therefore be disabled if possible.
Design layout, interactions, look/feel and create final version of My Stuff module.
I created an app called Peaches and Cream, although I didn't actually upload anything. I then saw is displayed in the set of App Icons. when I clicked on the icon, I got the following errir:
Async(undefined) exception: Server error -1: Method threw an error: TypeError: Cannot read property "displayName" from undefined
What are the consequences of leaving orphans when deleting comments? Write a number of unit tests to ensure that nothing bad happens.
We currently have input coming from the user (in an RPC) that is entirely unvalidated and put into the database. In some cases, the data needs conversion (e.g. tags may be converted from a series of comma-separated values into an array), and in other cases, the the type is unverified, and user-supplied invalid data can end up getting saved.
Create an interface for the mobile client, which is based on GET requests.
Currently, the sign-in page is entirely empty except for the statement, "Please sign in." This page needs a redesign.
When it is redesigned, add a comment about the clearing cookies in the browser if login gets stuck.
None of the mobile requests should return any App data fields which are data urls. These are the image1, image2, image3, source, and apk fields. This is useless and abundant information now, since the getdata request will return the more useful base64 decoded data. Currently the only mobile request which properly does this filtering is getinfo
Currently, per-RPC permissions as assigned on a per-user (visitor) basis. We should also provide groups which have permission sets, so if a user is in a group, he has the group's permissions as well as any additional permissions assigned to him explicitly.
Assigning to @reedspool.
Found a bug. For some reason, previous authors aren't being stored properly during new app creation. To reproduce this bug, simply "upload" a new app with anything you like in most fields, just make sure that the Previous Owners field contains some text. Then switch to another module, and back again. This error is the MApps.getAppList attempting to process an array of previous authors, where instead it only receives a string.
appObj is retrieved multiple times. Instead, just issue a new query() for the required data, and comment what's going on.
Currently there is a problem with how the last few bytes of the base 64 encoded string are decoded. The bug is isolated in the qx.util.Base64
rpc?tag=search:description
Causes Java backtrace. The search feature may not yet be implemented, but it still shouldn't crash.
Assigned to @reedspool
The concept of permissions that was implemented in the old Java backend is no longer implemented. It will be trivial to implement now, but we need to talk about specifics.
Passing either 105 or "105" to the getComments() function provides the correct results. It probably shouldn't. The actual appId (key) is 105.
This should be looked at as a general issue rearing its head in getComments(), but likely of much wider scope.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.